上篇学习了如何 plot Scatter,今天我们讲述如何 plot Bar
今日目标 : 柱状图分成上下两部分,每一个柱体上都有相应的数值标注,并且取消坐标轴的显示.
生成基本图形
向上向下生成12个数据
,X
为 [0,11] 的整数 ,Y
是均匀分布的随机数据。 使用的函数是plt.bar
,参数为X
和Y
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import matplotlib.pyplot as plt import numpy as np
n = 12
X = np.arange(n)
Y1 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n) Y2 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)
plt.bar(X, +Y1) plt.bar(X, -Y2)
plt.xlim(-.5, n) plt.xticks(())
plt.ylim(-1.25, 1.25) plt.yticks(())
plt.show()
|
加颜色和数据
用facecolor
设置主体颜色,edgecolor
设置边框颜色为白色,
1 2 3 4
| plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white') plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
plt.show()
|
接下来我们用函数plt.text
分别在柱体上方(下方)加上数值,用%.2f
保留两位小数,横向居中对齐ha='center'
,纵向底部(顶部)对齐va='bottom'
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white') plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
for x, y in zip(X, Y1): plt.text(x + 0.4, y + 0.05, '%.2f' % y, ha='center', va='bottom')
for x, y in zip(X, Y2): plt.text(x + 0.4, -y - 0.05, '%.2f' % y, ha='center', va='top') plt.show()
|
Reference
Checking if Disqus is accessible...