我想在子图之间画一条线或某种分隔符。
我很了解question,但是我无法从那里得到解决方案,如下所述。
我(某种程度上)理解了这些transformations,但是我要澄清的其他基本问题是:有没有一种方法可以将每个子图的“真实”左下角标识为或者,一旦开始添加标题,标签等,这些项目是否可以使坐标系变得混乱,例如,轴标签可能以y坐标<0结尾? / p>
使用每个轴的plot()方法并使用transform = axis.transAxes绘制一条线,这样(0,0)是左下角,而(1,1)是右上方画一条线,但是:
在该链接处给出的第二个解决方案使用blended_transform_factory
,但是,老实说,我无法使语法起作用。
一个玩具的例子是:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns
sns.set(style='darkgrid')
n = int(100)
x = np.arange(0,n)
fig, ax = plt.subplots(3,2)
for i,a in enumerate(ax.flatten() ):
y = np.random.rand(n)
sns.lineplot(x, y, ax=a)
a.set_title('Chart # ' + str(i+1))
a.set_xlabel('my x')
a.set_ylabel('my y')
# this is the first solution; messy output, line behind other elements of the figure
a.plot([-1, 1.5], [-0.2, -0.2], color='black', lw=0.5, transform=a.transAxes, clip_on=False)
第二种解决方法是将最后一行替换为下面的行(始终在for循环中):
trans = matplotlib.transforms.blended_transform_factory(fig.transFigure, a.transAxes)
line = matplotlib.lines.Line2D([0, 1], [0,0], color='w', transform=trans)
fig.lines.append(line)
我一定做错了,因为尽管第一个解决方案至少可以画点东西,但是一点也没画-但是没有错误。
有什么想法吗?谢谢!