From 1d44eab0e0d2d1d8a9bed84e1b4a514aac8d3db1 Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Mon, 24 Oct 2022 18:00:34 +0200 Subject: [PATCH] Fix hatch linewidth in PGF Co-authored-by: Antony Lee --- lib/matplotlib/backends/backend_pgf.py | 14 ++++++------ .../test_backend_pgf/hatch_linewidth.pdf | Bin 0 -> 15787 bytes lib/matplotlib/tests/test_backend_pgf.py | 20 ++++++++++++++++-- 3 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_backend_pgf/hatch_linewidth.pdf diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index 48b6e8ac152c..48831a3716c4 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -384,8 +384,7 @@ def __init__(self, figure, fh): self.figure = figure self.image_counter = 0 - def draw_markers(self, gc, marker_path, marker_trans, path, trans, - rgbFace=None): + def draw_markers(self, gc, marker_path, marker_trans, path, trans, rgbFace=None): # docstring inherited _writeln(self.fh, r"\begin{pgfscope}") @@ -404,8 +403,7 @@ def draw_markers(self, gc, marker_path, marker_trans, path, trans, r"\pgfsys@defobject{currentmarker}" r"{\pgfqpoint{%fin}{%fin}}{\pgfqpoint{%fin}{%fin}}{" % coords) self._print_pgf_path(None, marker_path, marker_trans) - self._pgf_path_draw(stroke=gc.get_linewidth() != 0.0, - fill=rgbFace is not None) + self._pgf_path_draw(stroke=gc.get_linewidth() != 0.0, fill=rgbFace is not None) _writeln(self.fh, r"}") maxcoord = 16383 / 72.27 * self.dpi # Max dimensions in LaTeX. @@ -429,8 +427,7 @@ def draw_path(self, gc, path, transform, rgbFace=None): self._print_pgf_clip(gc) self._print_pgf_path_styles(gc, rgbFace) self._print_pgf_path(gc, path, transform, rgbFace) - self._pgf_path_draw(stroke=gc.get_linewidth() != 0.0, - fill=rgbFace is not None) + self._pgf_path_draw(stroke=gc.get_linewidth() != 0.0, fill=rgbFace is not None) _writeln(self.fh, r"\end{pgfscope}") # if present, draw pattern on top @@ -453,6 +450,8 @@ def draw_path(self, gc, path, transform, rgbFace=None): r"{\pgfqpoint{0in}{0in}}{\pgfqpoint{1in}{1in}}") _writeln(self.fh, r"\pgfusepath{clip}") scale = mpl.transforms.Affine2D().scale(self.dpi) + lw = (mpl.rcParams["hatch.linewidth"] * mpl_pt_to_in * latex_in_to_pt) + _writeln(self.fh, r"\pgfsetlinewidth{%fpt}" % lw) self._print_pgf_path(None, gc.get_hatch_path(), scale) self._pgf_path_draw(stroke=True) _writeln(self.fh, r"\end{pgfscope}") @@ -464,8 +463,7 @@ def draw_path(self, gc, path, transform, rgbFace=None): xmin, xmax = f * xmin, f * xmax ymin, ymax = f * ymin, f * ymax repx, repy = math.ceil(xmax - xmin), math.ceil(ymax - ymin) - _writeln(self.fh, - r"\pgfsys@transformshift{%fin}{%fin}" % (xmin, ymin)) + _writeln(self.fh, r"\pgfsys@transformshift{%fin}{%fin}" % (xmin, ymin)) for iy in range(repy): for ix in range(repx): _writeln(self.fh, r"\pgfsys@useobject{currentpattern}{}") diff --git a/lib/matplotlib/tests/baseline_images/test_backend_pgf/hatch_linewidth.pdf b/lib/matplotlib/tests/baseline_images/test_backend_pgf/hatch_linewidth.pdf new file mode 100644 index 0000000000000000000000000000000000000000..956f6070e6ec2d661348600601d53c0ce6565332 GIT binary patch literal 15787 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 Y4o+?k#wJjVtSkTqC{j{kSrMrJ2XEUq=l}o! literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/test_backend_pgf.py b/lib/matplotlib/tests/test_backend_pgf.py index e218a81cdceb..31d9ac9ed7f0 100644 --- a/lib/matplotlib/tests/test_backend_pgf.py +++ b/lib/matplotlib/tests/test_backend_pgf.py @@ -9,10 +9,11 @@ import matplotlib as mpl import matplotlib.pyplot as plt +from matplotlib.backends.backend_pgf import FigureCanvasPgf, PdfPages +from matplotlib.backends.backend_pdf import FigureCanvasPdf from matplotlib.testing import _has_tex_package, _check_for_pgf -from matplotlib.testing.exceptions import ImageComparisonFailure from matplotlib.testing.compare import compare_images -from matplotlib.backends.backend_pgf import PdfPages +from matplotlib.testing.exceptions import ImageComparisonFailure from matplotlib.testing.decorators import ( _image_directories, check_figures_equal, image_comparison) from matplotlib.testing._markers import ( @@ -400,3 +401,18 @@ def test_document_font_size(): label=r'\normalsize the document font size is \the\fontdimen6\font' ) plt.legend() + + +@needs_pgf_xelatex +@pytest.mark.backend('pgf') +def test_pgf_hatch_linewidth(): + mpl.backend_bases.register_backend('pdf', FigureCanvasPgf) + mpl.rcParams['hatch.linewidth'] = 0.1 + + plt.bar(1, 1, color='white', edgecolor='black', hatch='/') + error = None + try: + compare_figure('hatch_linewidth.pdf') + finally: + # Restore backend to not mess up other tests + mpl.backend_bases.register_backend('pdf', FigureCanvasPdf) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy