假设我有这个代码:
num_rows = 10
num_cols = 1
fig, axs = plt.subplots(num_rows, num_cols, sharex=True)
for i in xrange(num_rows):
ax = axs[i]
ax.plot(np.arange(10), np.arange(10)**i)
plt.show()
结果图有太多的信息,现在我想选择1的轴,并提请它单独在一个新的数字
我试过做这样的事
def on_click(event):
axes = event.inaxes.get_axes()
fig2 = plt.figure(15)
fig2.axes.append(axes)
fig2.show()
fig.canvas.mpl_connect('button_press_event', on_click)
但是它并不完全起作用。正确的方法是什么?搜索文档并抛出SE几乎没有任何有用的结果
编辑:
我不介意重新绘制所选的轴,但我不确定如何判断选择了哪个轴,因此,如果该信息以某种方式可用,那么它对我来说是有效的解决方案
编辑#2:
所以我设法做了这样的事情:
def on_click(event):
fig2 = plt.figure(15)
fig2.clf()
for line in event.inaxes.axes.get_lines():
xydata = line.get_xydata()
plt.plot(xydata[:, 0], xydata[:, 1])
fig2.show()
这似乎是“工作”(所有其他信息都丢失了-标签,线条颜色,线条样式,线条宽度,xlim,ylim,等等…),但我觉得一定有一个更好的方法来做到这一点
2条答案
按热度按时间w41d8nur1#
复制坐标轴
腌制人偶
问题是轴不能被复制(即使
deepcopy
也会失败)。因此,要获得轴的真实副本,您可能需要使用pickle。下面的方法可以工作。它pickle完整的图形并删除所有轴,只显示一个轴。重新创建图
当然,上述方法的另一种方法是每次单击坐标轴时在新的图形中重新创建绘图。为此,可以使用一个函数在指定的坐标轴上创建一个绘图,并将指定的索引作为输入。在图形创建过程中使用此函数,以及稍后在另一个图形中复制绘图,确保在所有情况下都有相同的绘图。
rkkpypqq2#
例如,如果你有一个由函数
plot_something
生成的三条线的图,你可以这样做: