相关疑难解决方法(0)

pyplot - 复制轴内容并以新图形显示

假设我有这个代码:

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()
Run Code Online (Sandbox Code Playgroud)

结果图有太多信息,现在我想选择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)
Run Code Online (Sandbox Code Playgroud)

但它没有奏效.这样做的正确方法是什么?搜索文档并抛出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()
Run Code Online (Sandbox Code Playgroud)

这似乎是"工作"(所有其他信息丢失 - 标签,线条颜色,线条样式,线条宽度,xlim,ylim等...)但我觉得必须有一个更好的方法来做到这一点

谢谢

matplotlib

18
推荐指数
1
解决办法
6304
查看次数

标签 统计

matplotlib ×1