From 3c83748f5ab75d388b31ace47ffa41cb97a78f74 Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Mon, 24 Oct 2022 18:00:34 +0200 Subject: [PATCH 1/2] Fix hatch linewidth in PGF Co-authored-by: Antony Lee --- lib/matplotlib/backends/backend_pgf.py | 3 +++ .../test_backend_pgf/hatch_linewidth.pdf | Bin 0 -> 15787 bytes lib/matplotlib/tests/test_backend_pgf.py | 16 +++++++++++++--- 3 files changed, 16 insertions(+), 3 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..157292639929 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -453,6 +453,9 @@ 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}") 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..e5746f6fc2d0 100644 --- a/lib/matplotlib/tests/test_backend_pgf.py +++ b/lib/matplotlib/tests/test_backend_pgf.py @@ -10,9 +10,8 @@ import matplotlib as mpl import matplotlib.pyplot as plt 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.compare import compare_images, ImageComparisonFailure +from matplotlib.backends.backend_pgf import FigureCanvasPgf, PdfPages from matplotlib.testing.decorators import ( _image_directories, check_figures_equal, image_comparison) from matplotlib.testing._markers import ( @@ -378,6 +377,7 @@ def test_sketch_params(): assert baseline in buf +<<<<<<< HEAD # test to make sure that the document font size is set consistently (see #26892) @needs_pgf_xelatex @pytest.mark.skipif( @@ -400,3 +400,13 @@ 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') +@image_comparison(['hatch_linewidth'], extensions=['pdf']) +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='/') +>>>>>>> 7cbcd44f9a (Fix hatch linewidth in PGF) From 6b8c2fde3f1b4df4d135255376efa0b8fbfb3653 Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Sun, 6 Nov 2022 11:52:18 +0100 Subject: [PATCH 2/2] Try restoring linewidth --- lib/matplotlib/backends/backend_pgf.py | 6 ++++++ lib/matplotlib/tests/test_backend_pgf.py | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index 157292639929..fbc33e955563 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -453,11 +453,17 @@ 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) + # Store default PGF line width + _writeln(self.fh, r"\newlength{\defaultpgflinewidth}") + _writeln(self.fh, + r"\setlength{\defaultpgflinewidth}{\pgflinewidth}") 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) + # Restore default PGF line width + _writeln(self.fh, r"\pgfsetlinewidth{\defaultpgflinewidth}") _writeln(self.fh, r"\end{pgfscope}") _writeln(self.fh, r"}") # repeat pattern, filling the bounding rect of the path diff --git a/lib/matplotlib/tests/test_backend_pgf.py b/lib/matplotlib/tests/test_backend_pgf.py index e5746f6fc2d0..4c83d48f037a 100644 --- a/lib/matplotlib/tests/test_backend_pgf.py +++ b/lib/matplotlib/tests/test_backend_pgf.py @@ -10,7 +10,8 @@ import matplotlib as mpl import matplotlib.pyplot as plt from matplotlib.testing import _has_tex_package, _check_for_pgf -from matplotlib.testing.compare import compare_images, ImageComparisonFailure +from matplotlib.testing.compare import compare_images +from matplotlib.testing.exceptions import ImageComparisonFailure from matplotlib.backends.backend_pgf import FigureCanvasPgf, PdfPages from matplotlib.testing.decorators import ( _image_directories, check_figures_equal, image_comparison) @@ -377,7 +378,6 @@ def test_sketch_params(): assert baseline in buf -<<<<<<< HEAD # test to make sure that the document font size is set consistently (see #26892) @needs_pgf_xelatex @pytest.mark.skipif( @@ -400,7 +400,8 @@ 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') @image_comparison(['hatch_linewidth'], extensions=['pdf']) @@ -409,4 +410,3 @@ def test_pgf_hatch_linewidth(): mpl.rcParams['hatch.linewidth'] = 0.1 plt.bar(1, 1, color='white', edgecolor='black', hatch='/') ->>>>>>> 7cbcd44f9a (Fix hatch linewidth in PGF)