如何在垂直条形图matplotlib中的y轴和第一个条之间放置间隙
Posted
技术标签:
【中文标题】如何在垂直条形图matplotlib中的y轴和第一个条之间放置间隙【英文标题】:how to put gap between y axis and first bar in vertical barchart matplotlib 【发布时间】:2011-10-02 07:37:46 【问题描述】:我有一个条形图代码 sn-p 如下..当你运行它时,你会得到 4 个条,其中第一个位于 y 轴上。是否可以在 y 轴和第一个条之间放置一些间隙?
def plot_graph1():
xvals = range(4)
xnames=["one","two","three","four"]
yvals = [10,30,40,20]
width = 0.25
yinterval = 10
figure = plt.figure()
plt.grid(True)
plt.xlabel('x vals')
plt.ylabel('y vals')
plt.bar(xvals, yvals, width=width)
plt.xticks([ x+(width/2) for x in xvals],[x for x in xnames])
plt.yticks(range(0,max(yvals),yinterval))
figure.savefig("barchart.png",format="png")
plt.show()
if __name__=='__main__':
plot_graph1()
输出如下
任何帮助表示赞赏
谢谢
标记
【问题讨论】:
【参考方案1】:在您的具体情况下,使用plt.margins
和plt.ylim(ymin=0)
是最简单的。 margins
的行为类似于 axis('tight')
,但保留指定百分比的“填充”,而不是缩放到数据的确切限制。
另外,plt.bar
有一个 align="center"
选项,可以在一定程度上简化您的示例。
这是您上面示例的略微简化版本:
import matplotlib.pyplot as plt
def plot_graph1():
xvals = range(4)
xnames=["one","two","three","four"]
yvals = [10,30,40,20]
width = 0.25
yinterval = 10
figure = plt.figure()
plt.grid(True)
plt.xlabel('x vals')
plt.ylabel('y vals')
plt.bar(xvals, yvals, width=width, align='center')
plt.xticks(xvals, xnames)
plt.yticks(range(0,max(yvals),yinterval))
plt.xlim([min(xvals) - 0.5, max(xvals) + 0.5])
figure.savefig("barchart.png",format="png")
plt.show()
if __name__=='__main__':
plot_graph1()
【讨论】:
somehome 我的初始情节看起来像您的答案中的情节,您知道我可以重现问题中条形图坚持 y 轴的情节吗?以上是关于如何在垂直条形图matplotlib中的y轴和第一个条之间放置间隙的主要内容,如果未能解决你的问题,请参考以下文章
Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图垂直条形图分组条形图堆叠条形图
我有 2 个不同的条形图,它们有一个共同的 X 轴和 2 个不同的 Y 轴。我想使用 python 将这两个使用 X 轴的图合并为一个