我需要在matplotlib图上添加一个半透明的皮肤.我正在考虑在图中添加一个矩形,其中alpha <1且zorder足够高,因此它绘制在所有内容之上.
我在想这样的事情
figure.add_patch(Rectangle((0,0),1,1, alpha=0.5, zorder=1000))
Run Code Online (Sandbox Code Playgroud)
但我猜矩形只由Axes处理.有转弯吗?
我有一个包含3x2子图的图形,我想在中间的一对子图上设置背景颜色,以便更清楚哪些轴标签属于哪个子图.
facecolor构造子图时的设置仅改变由轴定义的区域的颜色; 刻度线和轴标签仍然被绘制figure.patch.假设没有简单的方法可以做到这一点,我可以在相关实例后面添加一个矩形补丁figure.axes.
经过一些实验,似乎figure.axes[x].get_position()返回Axescoördinates(normalizedcoördinates[0.0-1.0]),但Rectangle()似乎想要显示cocordinates(像素).此代码或多或少有效(ED:交互式,但在输出到png时(使用Agg渲染器),Rectangle的定位完全关闭):
import matplotlib.pyplot as plt
import matplotlib
f = plt.figure()
plt.subplot( 121 )
plt.title( 'model' )
plt.plot( range(5), range(5) )
plt.xlabel( 'x axis' )
plt.ylabel( 'left graph' )
plt.subplot( 122 )
plt.title( 'residuals' )
plt.plot( range(5), range(5) )
plt.xlabel( 'x axis' )
plt.ylabel( 'right graph' )
plt.tight_layout(pad=4)
bb = f.axes[0].get_position().transformed( f.transFigure ).get_points()
bb_pad = (bb[1] - bb[0])*[.20, .10]
bb_offs = bb_pad * [-.25, -.20]
r = matplotlib.patches.Rectangle( bb[0]-bb_pad+bb_offs, …Run Code Online (Sandbox Code Playgroud) 我想创建一个这样的图像,但我无法将单个图放在一个框架内。在此处输入图片说明