![](/img/trans.png)
[英]How to create space between bar chart and data table using matplotlib.pyplot?
[英]stacked bar chart - space between y-axis and first bar: matplotlib.pyplot
我剛開始使用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()
但是,如果第一個柱(2010)沒有正對着y軸,我寧願這樣做。
我試過在plt1和plt2中簡單地添加1到ind
即
p1 = plt.bar(ind+1, NonOECD, width, color = 'r')
p2 = plt.bar(ind+1, OECD, width, color = 'b', bottom = NonOECD)
但是,我無法確定ticklabels的等效變化。 所以,到目前為止,我所生產的是:
話雖如此,我可以通過使N = 8來捏造這個,在兩個元組中增加額外的零第一項? OECD和NonOECD並添加空白xticklabel:
即
N = 8
OECD = (0, 242, 244, 255, 263, 269, 276, 285)
NonOECD = (0, 282, 328, 375, 417, 460, 501, 535)
Sum = (0, '524', '572', '630', '680', '729', '777', '820')
plt.xticks(ind+width/2., ('', '2010', '2015', '2020', '2025', '2030', '2035', 2040'))
但是,我無法使用這個軟糖,因為我想在堆棧頂部顯示總數....
您想使用“邊距”功能。 您的代碼已修改:
fig = plt.figure()
ax = fig.add_subplot(111)
# the first argument is the margin of the x-axis, the second of the y-axis
ax.margins(0.04, 0)
p1 = ax.bar(ind, NonOECD, width, color = 'r')
p2 = ax.bar(ind, OECD, width, color = 'b', bottom = NonOECD)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.