Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Hatch alpha not preserved in SVG or PDF #16883

Open
@mnmelo

Description

@mnmelo

Bug report

Bug summary

A hatched patch, with hatch transparency, renders fine with the inline or PNG backends, but alpha is ignored by the SVG or PDF backends. Did not test other backends.

A possible fix for SVG is simple, and included below. I can open a PR with it.

This is separate from#8431 or#9894.

Code for reproduction

importmatplotlib.pyplotaspltfrommatplotlib.patchesimportRectangleplt.rcParams['hatch.linewidth']=9patch=Rectangle(xy=(.1,.1),width=.5,height=.3,facecolor="red",edgecolor=(0.,0.,0.,.4),hatch='/',lw=4)fig,ax=plt.subplots()ax.add_patch(patch)ax.set_title("SVG")plt.savefig('test.svg')ax.set_title("PDF")plt.savefig('test.pdf')ax.set_title("PNG")plt.savefig('test.png')# for uploading svg and pdf output was converted to png with inkscape:# inkscape -z -e testsvg.png test.svg -d 72# inkscape -z -e testpdf.png test.pdf -d 72# and concatenated with imagemagick:# montage testsvg.png testpdf.png test.png -mode concatenate -tile 1x3 out.png

Actual outcome

hatch_alpha

In addition, rendering of the PDF output is inconsistent across viewers (possibly due to#3841 and further inconsistency described in#14639). Inkscape views/converts nicely (as shown) but imagemagick doesn't even render the edge opacity. Firefox also views correctly. Adobe Reader DC behaves similar to imagemagick.

Expected outcome

SVG and PDF output should look like the PNG one.

FIX

I took a look at the generated SVG. The hatch description has the following style (note the lack ofstroke-opacity):

style="fill:#000000;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:9.0;"

The problem lies in the_write_hatches method, inbackend_svg.py, which never sets anystroke-opacity. A fix for SVG is as simple as adding'stroke-opacity': str(stroke[3]) to the dict passed to thegenerate_css call.

Matplotlib version

  • Operating system: Ubuntu 18.04
  • Matplotlib version: 3.1.2
  • Matplotlib backend: SVG/PDF/PNG
  • Python version: 3.6.8

Installed via pip.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp