熊猫:在保持规模的同时将图拆分成许多子图

时间:2015-07-05 10:39:44

标签: python pandas matplotlib graph

我有150个值的条形图。
代码是:
    rcParams.update({'figure.autolayout':True})     plt.figure(figsize =(14,9),dpi = 600)

reso_names = [x[0] for x in resolution3]
reso_values = [x[1] for x in resolution3]

plt.bar(range(len(reso_values[0:20])), reso_values[0:20], align='center')
plt.xticks(range(len(reso_names[0:20])), list(reso_names[0:20]), rotation='vertical')

plt.margins(0.075)
plt.xlabel('Resolution Category Tier 3')
plt.ylabel('Volume')
plt.title('Resolution Category Tier 3 Volume', {'family' : 'Arial Black',
        'weight' : 'bold',
        'size'   : 22})

plt.savefig('Reso3.pdf', format='pdf')
plt.show()

由于我想将其分解为每个20的子图以保持可读性,我在reso_names和reso_values(两个列表)中使用[0:20]。

然而,问题在于无法保持规模,每个子图具有非常不同的尺度,并且这是在不保持一致性方面的问题。如何设置可在所有图表中维护的比例。

1 个答案:

答案 0 :(得分:3)

您可以指定sharey=True以使所有子图中的y比例保持相同。

import numpy as np
import matplotlib.pyplot as plt

x = np.random.randint(1, 10, 10)
y = np.random.randint(1, 100, 10)

fig, axes = plt.subplots(nrows=1, ncols=2, sharey=True)
# do simple plot here, replace barplot yourself
axes[0].plot(x)
axes[1].plot(y)

enter image description here

或者如果您希望单独绘制它们,可以手动配置ax.set_ylim()