为什么我不能在Pandas系列产生的图上设置y轴范围?

时间:2016-01-11 04:33:56

标签: python pandas matplotlib

我尝试使用matplotlib和pandas创建一个条形图,其中y轴的范围为0% - 100%。我得到的范围只有0% - 50%。现在,由于我的所有酒吧都达到了10%左右,这并不是灾难性的。它只是令人沮丧,并可能干扰与其他整个范围的情节的比较。

我使用的代码(大致)如下:

from matplotlib import pyplot as plt
import pandas as pd

labels = list(cm.index) #Where cm is a DataFrame

for curr in sorted(labels):
    xa = cm[curr] # Pulls 1 column out of DataFrame to be plotted
    xplt = xa.plot(kind='bar', rot = 0, ylim = (0,1))
    xplt.set_yticklabels(['{:3.0f}%'.format(x*10) for x in range(11)])
    plt.show()

有什么明显的错误或缺失吗?

我得到的情节样本是:

enter image description here

奇怪的是,当我省略set_yticklabels语句时,我得到了这个:

enter image description here

我现在意识到第一张图不仅奇怪地缩放了,而且还给出了不正确的结果。第二个图中显示的值是正确的。我猜错误是在set_yticklabels语句中,但我不知道它可能是什么。

1 个答案:

答案 0 :(得分:4)

keyword ylim似乎适用于pandas.DataFrame.plot.bar()

df = pd.DataFrame(np.random.randint(low=0, high=10, size=(10, 2)), columns=['low', 'high'])
df.high = df.high * 10

   low  high
0    3    10
1    2     0
2    7    20
3    3    90
4    7    60
5    0    40
6    1     0
7    3    70
8    1    80
9    6    90

for col in df:
    df[col].plot.bar(ylim=(0, 100))

给出:

Values ranging 0-10 Values ranging 0-100