gpt4 book ai didi

python - matplotlib:如何将多个条与线组合

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:52 24 4
gpt4 key购买 nike

我有一个非常简单的分组条形图,有 5 组,每组 4 个条。我使用了 matplotlib documentation 中的示例,它是这样的:

import numpy as np
import matplotlib.pyplot as plt

ind = np.arange(5)
avg_bar1 = (81191,79318,57965,60557,14793)
avg_bar2 = (26826,26615,31364,31088,55472)
avg_bar3 = (36232,38038,38615,39014,40812)
avg_bar4 = (26115,25879,25887,28326,27988)

fig, ax = plt.subplots()

rects1 = ax.bar(ind, avg_bar1, 0.15, label='bar1')
rects2 = ax.bar(ind + 0.15, avg_bar2, 0.15, label='bar2')
rects3 = ax.bar(ind + 0.30, avg_bar3, 0.15, label='bar2')
rects4 = ax.bar(ind + 0.45, avg_bar4, 0.15, label='bar2')

plt.xlabel('Distributions')
plt.ylabel('ms')
plt.xticks(ind + 0.15, ('50/50', '60/40', '70/30', '80/20', '90/10'))
plt.legend()

plt.tight_layout()
plt.show()

问题

但是相应的其他组中的一些条值(例如 group1 中的 bar1 和 group2 中的 bar1 等)彼此相差不大。

我想要什么

所以我想添加线条,以便更清楚地看到每个组的趋势。这些线应该从一个组中每个栏的顶部到对应的其他组中栏的顶部。

我在网上找不到任何类似的东西。

这可能吗?

最佳答案

我最近开始学习MatplotlibNumpy,发现你的问题很有趣。

因此,我花时间创建了分组条形图和与该分组条形图相关的折线图的组合图。

结果: enter image description here

代码:

import numpy as np
import matplotlib.pyplot as plt

ind = np.arange(5)
avg_bar1 = (81191,79318,57965,60557,14793)
avg_bar2 = (26826,26615,31364,31088,55472)
avg_bar3 = (36232,38038,38615,39014,40812)
avg_bar4 = (26115,25879,25887,28326,27988)

rects1 = plt.bar(ind, avg_bar1, 0.15, color='#ff0000',label='bar1')
rects2 = plt.bar(ind + 0.15, avg_bar2, 0.15, color='#00ff00', label='bar2')
rects3 = plt.bar(ind + 0.30, avg_bar3, 0.15, color='#0000ff', label='bar3')
rects4 = plt.bar(ind + 0.45, avg_bar4, 0.15, color='#000000', label='bar4')

high_point_x = []
high_point_y = []
for i in range(0,5):
single_bar_group={rects1[i].get_height():rects1[i].get_x() + rects1[i].get_width()/2.0,
rects2[i].get_height():rects2[i].get_x() + rects2[i].get_width()/2.0,
rects3[i].get_height():rects3[i].get_x() + rects3[i].get_width()/2.0,
rects4[i].get_height():rects4[i].get_x() + rects4[i].get_width()/2.0}

height_list = list(single_bar_group.keys())
height_list.sort(reverse=True)
for single_height in height_list:
high_point_y.append(single_height)
high_point_x.append(single_bar_group[single_height])
break

trend_line = plt.plot(high_point_x,high_point_y,marker='o', color='#5b74a8', label='Trend Line')

plt.xlabel('Distributions')
plt.ylabel('ms')
plt.xticks(ind+0.15, ('50/50', '60/40', '70/30', '80/20', '90/10'))
plt.legend()
plt.show()

关于python - matplotlib:如何将多个条与线组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38161161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com