use*_*225 0 matplotlib python-3.x
我刚开始使用matplotlib.pyplot并且有点卡住了.
使用matpltlib.pyplot文档中的示例,我创建了一个堆积条形图
使用以下代码:
import numpy as np
import matplotlib.pyplot as plt
N = 7
OECD = (242, 244, 255, 263, 269, 276, 285)
NonOECD = (282, 328, 375, 417, 460, 501, 535)
Sum = ('524', '572', '630', '680', '729', '777', '820')
ind = np.arange(N)
width = 0.5
p1 = plt.bar(ind, NonOECD, width, color = 'r')
p2 = plt.bar(ind, OECD, width, color = 'b', bottom = NonOECD)
plt.ylabel('Quadrillion Btu')
plt.title('World Total Energy Consumption 2010 - 2040')
plt.xticks(ind+width/2., ('2010', '2015', '2020', '2025', '2030', '2035', '2040'))
plt.yticks(np.arange(0, 1001, 200))
plt.legend((p1[0], p2[0]), ('Non - OECD', 'OECD'), loc = 2, frameon = 'false')
plt.tick_params(top = 'off', bottom = 'off', right = 'off')
plt.grid(axis = 'y', linestyle = '-')
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是我想在条形图上显示总数,我不知道如何.我看过这篇文章但有问题:
for ii,rect in enumerate(p1):
h1 = rect.get_height()
for ii,rect in enumerate(p2):
h2 = rect.get_height()
height =
plt.text(rect.get_x()+rect.get_width()/2., height, '%s'% (Sum[ii]), ha = 'center', va='bottom')
Run Code Online (Sandbox Code Playgroud)
如果我使用height = h1我得到
; 如果我使用height = h2我得到
; 如果我使用height = h1 + h2我得到
.
我想要的是这些数字直接位于第二个(蓝色)栏上方[就像我第一次尝试中2010栏上的524一样].我错过了一些非常明显的东西吗
一如既往,任何帮助将不胜感激!干杯
试试这个:
for r1,r2 in zip(p1,p2):
h1 = r1.get_height()
h2 = r2.get_height()
plt.text(r1.get_x()+r1.get_width()/2., h1+h2, '%s'% (h1+h2), ha = 'center', va='bottom')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2427 次 |
| 最近记录: |