Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e371623

Browse files
committed
Use correct DPI when drawing in Cairo renderers
Unlike the Agg renderer, the Cairo renderer exists forever and is at the DPI when the figure was created. This needs to be updated before drawing or things in physical sizes (e.g., text or line widths) will be the wrong size.
1 parent ce9a7b1 commit e371623

File tree

5 files changed

+6
-0
lines changed

5 files changed

+6
-0
lines changed

lib/matplotlib/backends/backend_gtk3cairo.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def on_draw_event(self, widget, ctx):
2828
allocation.width, allocation.height)
2929
self._renderer.set_width_height(
3030
allocation.width, allocation.height)
31+
self._renderer.dpi = self.figure.dpi
3132
self.figure.draw(self._renderer)
3233

3334

lib/matplotlib/backends/backend_gtk4cairo.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def on_draw_event(self, widget, ctx):
2727
allocation.width, allocation.height)
2828
self._renderer.set_width_height(
2929
allocation.width, allocation.height)
30+
self._renderer.dpi = self.figure.dpi
3031
self.figure.draw(self._renderer)
3132

3233

lib/matplotlib/backends/backend_qtcairo.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ def __init__(self, figure=None):
1313

1414
def draw(self):
1515
if hasattr(self._renderer.gc, "ctx"):
16+
self._renderer.dpi = self.figure.dpi
1617
self.figure.draw(self._renderer)
1718
super().draw()
1819

@@ -23,6 +24,7 @@ def paintEvent(self, event):
2324
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
2425
self._renderer.set_ctx_from_surface(surface)
2526
self._renderer.set_width_height(width, height)
27+
self._renderer.dpi = self.figure.dpi
2628
self.figure.draw(self._renderer)
2729
buf = self._renderer.gc.ctx.get_target().get_data()
2830
if QT_API == "PyQt6":

lib/matplotlib/backends/backend_tkcairo.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ def draw(self):
1818
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
1919
self._renderer.set_ctx_from_surface(surface)
2020
self._renderer.set_width_height(width, height)
21+
self._renderer.dpi = self.figure.dpi
2122
self.figure.draw(self._renderer)
2223
buf = np.reshape(surface.get_data(), (height, width, 4))
2324
_backend_tk.blit(

lib/matplotlib/backends/backend_wxcairo.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ def draw(self, drawDC=None):
3535
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
3636
self._renderer.set_ctx_from_surface(surface)
3737
self._renderer.set_width_height(width, height)
38+
self._renderer.dpi = self.figure.dpi
3839
self.figure.draw(self._renderer)
3940
self.bitmap = wxcairo.BitmapFromImageSurface(surface)
4041
self._isDrawn = True

0 commit comments

Comments
 (0)