6

使用 matplotlib(使用 Python),是否可以一次为图形上的所有子图设置属性?

我创建了一个带有多个子图的图形,目前我有这样的东西:

import numpy as np
import matplotlib.pyplot as plt

listItems1 = np.arange(0, 100)
listItems8 = np.arange(0, 100)
listItems11 = np.arange(0, 100)
figure1 = plt.figure(1)

# First graph on Figure 1
graphA = figure1.add_subplot(2, 1, 1)
graphA.plot(listItems1, listItems8, label='Legend Title')
graphA.legend(loc='upper right', fontsize='10')
graphA.grid(True)
plt.xticks(range(0, len(listItems1) + 1, 36000), rotation='20', fontsize='7', color='white', ha='right')
plt.xlabel('Time')
plt.ylabel('Title Text')

# Second Graph on Figure 1
graphB = figure1.add_subplot(2, 1, 2)
graphB.plot(listItems1, listItems11, label='Legend Title')
graphB.legend(loc='upper right', fontsize='10')
graphB.grid(True)
plt.xticks(range(0, len(listItems1) + 1, 36000), rotation='20', fontsize='7', color='white', ha='right')
plt.xlabel('Time')
plt.ylabel('Title Text 2')

plt.show()

问题,有没有办法一次设置任何或所有这些属性?我将在一个图中有 6 个不同的子图,一遍又一遍地复制/粘贴相同的“xticks”设置和“图例”设置有点乏味。

是否有某种“figure1.legend(...”之类的东西?

谢谢。给我的第一篇文章。你好世界!;)

4

2 回答 2

7

如果您的子图实际上共享一个轴/一些轴,您可能有兴趣指定sharex=Trueand/or sharey=Truekwargssubplots.

请参阅 John Hunter 在此视频中进行更多解释。它可以使您的图表看起来更清晰并减少代码重复。

于 2013-07-19T19:18:29.187 回答
2

我建议使用for循环:

for grph in [graphA, graphB]:
    grph.#edit features here

您还可以for根据您想要的方式以不同的方式构建循环,例如

graphAry = [graphA, graphB]
for ind in range(len(graphAry)):
    grph = graphAry[ind]
    grph.plot(listItems1, someList[ind])
#etc

子图的好处是您也可以使用for循环来绘制它们!

for ind in range(6):
    ax = subplot(6,1,ind)
    #do all your plotting code once!

您必须考虑如何组织要绘制的数据以利用索引。说得通?

每当我做多个子图时,我都会考虑如何for为它们使用循环。

于 2013-07-19T18:49:39.213 回答