Matplotlib:从多个子图中获取单个子图

我有一个应用程序,其中有一个带有九条线图子图(3x3)的图,我想让用户选择一个图表,并打开一个小的wx Python应用程序,以允许在指定的子图上进行编辑和缩放。情节。

是否可以从选定的子图中获取所有信息,即轴标签,轴格式,线条,刻度大小,刻度标签等,并将其快速绘制在wx应用程序的画布上?

我目前的解决方案太长且笨重,因为我只是重新制作用户选择的情节。 我正在考虑这样的事情,但这并不正确。

#ax is a dictionary containing each instance of the axis sub-plot
selected_ax = ax[6]
wx_fig = plt.figure(**kwargs)
ax = wx_fig.add_subplots(111)
ax = selected_ax
plt.show()

有没有办法将属性从getp(ax)保存到变量中,并使用setp(ax)的该变量的选定属性构造新图表? 我觉得这个数据必须以某种方式访问​​,因为你调用getp(ax)时它的打印速度有多快,但是我甚至无法得到以下代码在具有两个y轴的轴上工作:

label = ax1.yaxis.get_label()
ax2.yaxis.set_label(label)

我有一种感觉这是不可能的,但我想我会问无论如何。


不幸的是,在matplotlib中克隆一个轴或在多个轴之间共享艺术家是很困难的。 (并非完全不可能,但重做剧情会更简单。)

但是,像下面这样的东西呢?

当你左键点击一个子图时,它将占据整个图形,而当你右键点击时,你将“缩小”以显示剩余的子图。

import matplotlib.pyplot as plt

def main():
    fig, axes = plt.subplots(nrows=2, ncols=2)
    for ax, color in zip(axes.flat, ['r', 'g', 'b', 'c']):
        ax.plot(range(10), color=color)
    fig.canvas.mpl_connect('button_press_event', on_click)
    plt.show()

def on_click(event):
    """Enlarge or restore the selected axis."""
    ax = event.inaxes
    if ax is None:
        # Occurs when a region not in an axis is clicked...
        return
    if event.button is 1:
        # On left click, zoom the selected axes
        ax._orig_position = ax.get_position()
        ax.set_position([0.1, 0.1, 0.85, 0.85])
        for axis in event.canvas.figure.axes:
            # Hide all the other axes...
            if axis is not ax:
                axis.set_visible(False)
    elif event.button is 3:
        # On right click, restore the axes
        try:
            ax.set_position(ax._orig_position)
            for axis in event.canvas.figure.axes:
                axis.set_visible(True)
        except AttributeError:
            # If we haven't zoomed, ignore...
            pass
    else:
        # No need to re-draw the canvas if it's not a left or right click
        return
    event.canvas.draw()

main()
链接地址: http://www.djcxy.com/p/57265.html

上一篇: Matplotlib: Grab Single Subplot from Multiple Subplots

下一篇: Writing "fib" to run in parallel: