根据轴标签跳转到matplotlib轴对象

时间:2018-02-07 17:37:10

标签: python matplotlib plot

在matplotlib中,可以将图形名称传递给新创建的图形:

plt.figure('figure1')

例如,当尝试将先前创建的数字设为当前时,这非常方便。

import matplotlib.pyplot as plt
plt.figure('figure1')
plt.figure('figure2')
plt.figure('figure1')

上述脚本中的第四行将返回到第二行中创建的图形,而不必添加新图形。

类似地,可以将轴添加到图形以及轴的标签。以下

import matplotlib.pyplot as plt
fig = plt.figure('figure1')
rect1 = (0.5,0.5,0.5,0.5)
rect2 = (0.2,0.3,0.4,0.5)
fig.add_axes(rect1, label = 'axes1')
fig.add_axes(rect2, label = 'axes2')

添加带有标签的轴对象' axes1'和'轴2'到目前的数字。我想知道是否有可能沿着相同的线条返回这些轴,以及根据它的标签跳回到图形。

之类的东西
ax = plt.axes('axes2')

以后我可以专门绘制一组数据到我选择的轴上,但是基于轴的标签。

ax.plot(XData, YData)

我需要这样做,因为我的所有数据都是字典的一部分,我设计的是数字和轴感知。也就是键值对中的键应该成为图形和轴标签。此外,我正在每个轴上绘制几个东西,但不是在我的循环中同时绘制。

关于这是否可行的任何想法?

1 个答案:

答案 0 :(得分:2)

没有内置函数可以从其标签中获取轴。但你可以自己写一个。环绕图中的所有轴并返回带有所需标签的轴。

def get_ax_by_name(fig, name):
    for axi in fig.axes:
        label = axi.get_label()
        if label == name:
            return axi
    return plt.gca()

def func(x,y, figure_name, axes_name):
    fig = plt.figure(figure_name)
    ax = get_ax_by_name(fig, axes_name)
    ax.plot(x,y)