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

Commitb807359

Browse files
sramesh750chahak13
andcommitted
FIX: make inset axes transparent on figures
Co-authored-by: Shreeya Ramesh <shreeyar@umich.edu>Co-authored-by: Chahak Mehta <chahakmehta013@gmail.com>
1 parent647afe6 commitb807359

File tree

2 files changed

+51
-3
lines changed

2 files changed

+51
-3
lines changed

‎lib/matplotlib/figure.py

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3059,12 +3059,37 @@ def savefig(self, fname, *, transparent=None, **kwargs):
30593059

30603060
withExitStack()asstack:
30613061
iftransparent:
3062+
def_recursively_make_subfig_transparent(exit_stack,subfig):
3063+
exit_stack.enter_context(
3064+
subfig.patch._cm_set(
3065+
facecolor="none",edgecolor="none"))
3066+
foraxinsubfig.axes:
3067+
exit_stack.enter_context(
3068+
ax.patch._cm_set(
3069+
facecolor="none",edgecolor="none"))
3070+
forsub_subfiginsubfig.subfigs:
3071+
_recursively_make_subfig_transparent(
3072+
exit_stack,sub_subfig)
3073+
3074+
def_recursively_make_axes_transparent(exit_stack,ax):
3075+
exit_stack.enter_context(
3076+
ax.patch._cm_set(facecolor="none",edgecolor="none"))
3077+
forchild_axinax.child_axes:
3078+
exit_stack.enter_context(
3079+
child_ax.patch._cm_set(
3080+
facecolor="none",edgecolor="none"))
3081+
forchild_childaxinax.child_axes:
3082+
_recursively_make_axes_transparent(
3083+
exit_stack,child_childax)
3084+
30623085
kwargs.setdefault('facecolor','none')
30633086
kwargs.setdefault('edgecolor','none')
3087+
# set subfigure to appear transparent in printed image
3088+
forsubfiginself.subfigs:
3089+
_recursively_make_subfig_transparent(stack,subfig)
3090+
# set axes to be transparent
30643091
foraxinself.axes:
3065-
stack.enter_context(
3066-
ax.patch._cm_set(facecolor='none',edgecolor='none'))
3067-
3092+
_recursively_make_axes_transparent(stack,ax)
30683093
self.canvas.print_figure(fname,**kwargs)
30693094

30703095
defginput(self,n=1,timeout=30,show_clicks=True,

‎lib/matplotlib/tests/test_figure.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,29 @@ def test_savefig_pixel_ratio(backend):
557557
assertratio1==ratio2
558558

559559

560+
@mpl.rc_context({"savefig.transparent":True})
561+
@check_figures_equal(extensions=["png"])
562+
deftest_savefig_transparent(fig_test,fig_ref):
563+
# create two transparent subfigures with corresponding transparent inset
564+
# axes. the entire background of the image should be transparent.
565+
gs1=fig_test.add_gridspec(3,3,left=0.05,wspace=0.05)
566+
f1=fig_test.add_subfigure(gs1[:, :])
567+
f2=f1.add_subfigure(gs1[0,0])
568+
569+
ax12=f2.add_subplot(gs1[:, :])
570+
571+
ax1=f1.add_subplot(gs1[:-1, :])
572+
iax1=ax1.inset_axes([.1,.2,.3,.4])
573+
iax2=iax1.inset_axes([.1,.2,.3,.4])
574+
575+
ax2=fig_test.add_subplot(gs1[-1, :-1])
576+
ax3=fig_test.add_subplot(gs1[-1,-1])
577+
578+
foraxin [ax12,ax1,iax1,iax2,ax2,ax3]:
579+
ax.set(xticks=[],yticks=[])
580+
ax.spines[:].set_visible(False)
581+
582+
560583
deftest_figure_repr():
561584
fig=plt.figure(figsize=(10,20),dpi=10)
562585
assertrepr(fig)=="<Figure size 100x200 with 0 Axes>"

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp