how to put gap between y axis and first bar in vertical barchart matplotlib
I have a barchart code snippet as below..When you run this,you get 4 bars ,the first of which lies against the y axis.Is it开发者_StackOverflow社区 possible to put some gap between y axis and the first bar?
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()
The output is as below
Any help appreciated
thanks
mark
In your specific case, it's easiest to use plt.margins
and plt.ylim(ymin=0)
. margins
will act like axis('tight')
, but leave the specified percentage of "padding", instead of scaling to the exact limits of the data.
Also, plt.bar
has an align="center"
option that simplifies your example somewhat.
Here's a slightly simplified version of your example above:
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()
精彩评论