繁体   English   中英

Matplotlib 堆积条未显示

[英]Matplotlib stacked bar not showing

我正在尝试使用 matplotlib 在 python 3.7/3.9 中使用以下代码绘制堆叠条形图:

comp1Cost = []
comp2Cost = []
pipeCost = []
installCost = []
secondBottom = []
thirdBottom = []
labelX = []
cnt = 0
for key in aCosts:
    labelX.append(float(aCosts[key]["pipeDetails"]["PressUp"]))
    comp1Cost.append((aCosts[key]["preCompressorCosts"]["CAPEX"]/1000000))
    pipeCost.append((aCosts[key]["pipeCosts"]["totalCost"]/1000000))
    installCost.append((aCosts[key]["pInstallCost"]["total_install_cost"]/1000000))
    comp2Cost.append((aCosts[key]["poCompressorCosts"]["CAPEX"]/1000000))
    secondBottom.append((comp1Cost[cnt]+pipeCost[cnt]))
    thirdBottom.append((comp1Cost[cnt]+pipeCost[cnt]+installCost[cnt]))
    cnt = 1 + cnt
fig,bx = plt.subplots()

bx.bar(labelX, pipeCost,1,label="Pipe Material Cost",color='r')
bx.bar(labelX, comp1Cost, 1, bottom=pipeCost,label="Pre Compressor Costs", color='b')
bx.bar(labelX, installCost,1,label="Pipe Install Cost",color='g',bottom=secondBottom)
bx.bar(labelX, comp2Cost,1,label="Post Compressor Costs",color='y',bottom=thirdBottom)

print("labelX",labelX)
print("pipeCost",pipeCost)
print("comp1Cost",comp1Cost)
print("comp2Cost",comp2Cost)
print("installCost",installCost)

bx.set_ylabel("Cost million")
bx.set_xlabel("Pipeline inlet pressure - Pascals")
bx.set_title("CAPEX Cost Breakdown")
bx.legend()
plt.savefig('bar.png')
plt.show()

加载后,数组如下。 轴显示并具有正确的缩放比例和标签(当这些没有被注释掉时)。 但实际图形是空白的,没有条形。

我无法完全找到错误,并欢迎任何建议。

labelX [3000000.0,3700000.0,4400000.0,5100000.0,5800000.0,6500000.0,7200000.0,7900000.0,8600000.0,9300000.0] pipeCost [39.205836829440045,49.29444816201567,56.084000633780626,66.36404671650006,73.28122235502757,83.75270318789067,90.79750199318073,101.4604175761876,108.63283954824009,119.48718988139075] comp1Cost [0.0,0.8344540759301868, 1.3909883215855556,1.829099552307249,2.1775934319847634,2.497231609417327,2.772435378973363,3.0001466918008792,3.2102150554113407,3.426855354135507] comp2Cost [2.7045137658080356,2.120792548365006,1.6448839113097127,1.1847748864728636,0.7676367792465681,0.3605770879284079,2.772435378973363,3.0001466918008792,3.2102150554113407,3.426855354135507] installCost [24.454735004448,24.455953435768357,24.456773430028235,24.4580149814875,24.458850389173314, 24.460115060771486, 24.460965881883233, 24.462253673620314, 24.463119908158, 24.464430820033986]

谢谢,斯科特 C

在条形图中,x 轴是 1,2,3 等等。 labelX应该只是一个ticklabel,而不是X值

labelX = [3000000.0, 3700000.0, 4400000.0, 5100000.0, 5800000.0, 6500000.0, 7200000.0, 7900000.0, 8600000.0, 9300000.0]
pipeCost = [39.205836829440045, 49.29444816201567, 56.084000633780626, 66.36404671650006, 73.28122235502757, 83.75270318789067, 90.79750199318073, 101.4604175761876, 108.63283954824009, 119.48718988139075]
comp1Cost = [0.0, 0.8344540759301868, 1.3909883215855556, 1.829099552307249, 2.1775934319847634, 2.497231609417327, 2.772435378973363, 3.0001466918008792, 3.2102150554113407, 3.426855354135507]
comp2Cost = [2.7045137658080356, 2.120792548365006, 1.6448839113097127, 1.1847748864728636, 0.7676367792465681, 0.3605770879284079, 2.772435378973363, 3.0001466918008792, 3.2102150554113407, 3.426855354135507]
installCost =  [24.454735004448, 24.455953435768357, 24.456773430028235, 24.4580149814875, 24.458850389173314, 24.460115060771486, 24.460965881883233, 24.462253673620314, 24.463119908158, 24.464430820033986]

fig,bx = plt.subplots()
x = np.arange(10)

bx.bar(x, pipeCost,1,label="Pipe Material Cost",color='r')
bx.bar(x, comp1Cost, 1, bottom=pipeCost,label="Pre Compressor Costs", color='b')
bx.bar(x, installCost,1,label="Pipe Install Cost",color='g')
bx.bar(x, comp2Cost,1,label="Post Compressor Costs",color='y')
bx.set_xticks(x)
bx.set_xticklabels(labelX, rotation=20, fontsize=7)

bx.set_ylabel("Cost million")
bx.set_xlabel("Pipeline inlet pressure - Pascals")
bx.set_title("CAPEX Cost Breakdown")
bx.legend()

输出: 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM