gpt4 book ai didi

python - 堆叠的 matplotlib 条中的替代颜色

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:17 25 4
gpt4 key购买 nike

我正在 matplotlib 中生成堆叠条形图(在 Windows 7 上使用 Python 2.7)。

因为我想用它来成对比较来自 2 个数据集的数据,所以我想为每个第二个条使用不同的颜色。谁能告诉我如何实现这一点?

我的条形图基本上是这样的:

import numpy
import matplotlib.pyplot as plt


fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)

IDs = ["1","A","2","B","3","C","4","D","5","E"]
N = len(IDs)

property1 = numpy.array([1,3,4,2,3,5,6,7,3,2])
property2 = numpy.array(range(10))
property3 = numpy.array(range(10,0,-1))

ind = numpy.arange(N)
width = 0.8

p1 = ax1.bar(ind, property1, width, color='red')
p2 = ax1.bar(ind, property2, width, color='blue', bottom=property1)
p3 = ax1.bar(ind, property3, width, color='green', bottom=property1 + property2)
plt.xticks(ind+width/2., IDs )

plt.show()
plt.close()

所以我想对标有字母的条形图使用一种配色方案,对标有数字的条形图使用另一种配色方案(因为例如“1”和“A”形成一对 - 它们代表 2 种不同实验条件下的相同样本,这就是为什么我希望它们彼此相邻)。

理想情况下,如果可以调整宽度以在一对条形之间不留间隙(但在两对之间留有间隙),那就太好了。

但现在,我不知道该怎么做,所以任何建议都很好!

(我可以单独使用两个“数据集”,这样更容易吗?也许做两个有很大差距的图,彼此相交?)

最佳答案

您可以通过切片更优雅地完成此操作。一个可能更好的解决方案是去交错您的数据。

IDs = ["1","A","2","B","3","C","4","D","5","E"]

N = len(IDs)
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)

set_count = 2
set_label = np.vstack([j*ones(len(IDs)//set_count) for j in range(set_count)]).T.ravel()

property1 = numpy.array([1,3,4,2,3,5,6,7,3,2])
property2 = numpy.array(range(10))
property3 = numpy.array(range(10,0,-1))

props = [property1,property2,property3]

ind = numpy.arange(N/set_count)
width = 0.9
b_width = 0.9/set_count

color_sets = [['red','green','blue'],['black','magenta','yellow']]

for j in range(set_count):
tmp_accum = np.zeros(len(props[0]))
for k in range(len(props)):
ax1.bar(ind +j*b_width, props[k][set_label==j], width=b_width, color=color_sets[j][k], bottom=tmp_accum[set_label==j])
tmp_accum += props[k]


lab_ind = []
for j in range(set_count):

lab_ind.append(ind + (j+.5)*b_width)

plt.xticks(np.vstack(lab_ind).T.ravel(), IDs )

它需要一些完整性检查,但它可以工作并且应该可以轻松扩展到超过 2 个类和超过 3 个属性(您只需要确保所有长度同步,使用 itertools.cycle 的颜色可能会有所帮助)。

image of results

关于python - 堆叠的 matplotlib 条中的替代颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12862529/

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