Matplotlib设置条形图的起始点值

5

我有一个数据集,我正在使用Python的Matplotlib绘制它,如下所示:

import matplotlib.pyplot as plt
%matplotlib inline

n_groups = 10
fig, ax = plt.subplots()
fig.set_size_inches(15,10)
index = np.arange(0, n_groups * 2, 2)
print index
bar_width = 0.35
opacity = 0.4
error_config = {'ecolor': '0.3'}

rects1 = plt.bar(index, df.Quant[0:10], bar_width,
                 alpha=opacity,
                 color='b',
                 error_kw=error_config,
                 label='Quant')

rects2 = plt.bar(index + bar_width, df.English[0:10], bar_width,
                 alpha=opacity,
                 color='r',
                 error_kw=error_config,
                 label='English')

rects3 = plt.bar(index + bar_width * 2, df.Logical[0:10], bar_width,
                 alpha=opacity,
                 color='g',
                 error_kw=error_config,
                 label='Logical')

plt.xlabel('Group')
plt.ylabel('Scores')
plt.title('Scores by Designation')
plt.xticks(index + bar_width, df.Designation[0:10], rotation='vertical')
plt.legend()

plt.tight_layout()
plt.show()

这导致了以下图表:

enter image description here

如您所见,值在400分以上有所不同。我如何将图表的范围从400减小到更低?

此外,我试图在seaborn中做同样的事情,但找不到任何示例。


3
我有点困惑你所说的“减小图表范围”的意思是什么。你是在问如何更改y轴限制吗?(如果是这样,请参见plt.ylimax.set(ylim=[ymin, ymax]))。您还可以考虑使用plt.margins(x=0.05)将x轴限制居中于数据范围上。 - Joe Kington
@JoeKington 太棒了,是的,那就是我想要的 ax.set。请原谅我用词不当 :P - Koustuv Sinha
1个回答

4
使用ax.set(ylim=[400, 600])可以解决问题。这里,400是y轴的最小值,而600是y轴的最大值。根据需要进行更改。
我已经复制了您图表的一部分,并将y轴缩短。 enter image description here

谢谢!是的,正如@JoeKington在评论中提到的那样,设置ax.set可以解决问题 :) - Koustuv Sinha
顺便问一下,你能给我推荐一个好的库来进行空间绘图吗?我已经尝试了不太好看的matplotlib basemap和只能使用iframe的folium。我需要更好的东西,可以转换成图片。 - Koustuv Sinha
很不幸,我从未做过空间图。然而,您可以查看这个页面,其中包含Python绘图库的列表 链接。但是,Matplotlib是首选,可能是Python最好的。但还有许多其他选择。特别是,Plotly似乎是一个强有力的竞争者。如果您找到更好的选择,我会很高兴知道,因为我曾经遇到过Matplotlib的问题,并不得不在过去从Python转到Java。 - Pratanu Mandal
@KoustuvSinha - 看看cartopy。 - Joe Kington
谢谢,我会尝试一下。 - Pratanu Mandal
我想做同样的事情,但是我也有一些负值。我该怎么办? - seralouk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接