gpt4 book ai didi

python matplotlib : add labels and set their colours correctly for a stackplot

转载 作者:行者123 更新时间:2023-12-01 04:35:23 25 4
gpt4 key购买 nike

我正在创建一个堆积图。根据我自己的实验和在线研究,我知道向堆叠图中添加标签很困惑,但我已经成功地用下面的代码完成了它。

我的问题是:如何检索用于创建堆积图的颜色循环,以便我可以为图例分配正确的颜色?

现在,字段 1 呈蓝色,字段 2 呈绿色,但两个标签均以第一种颜色显示。我可以对绘图和图例强制使用特定的颜色,但我非常喜欢默认的颜色循环,并希望继续使用它。

df=pd.DataFrame(np.ones((10,2)),columns=['field1','field2'])
fig,ax=plt.subplots()
plt.suptitle('This is a plot of ABCDEF')
ax.stackplot(df.index,df.field1,df.field2]
patch1=matplotlib.patches.Patch(color='red',label= 'field 1')
patch2=matplotlib.patches.Patch(color='blue', label ='field 2')
plt.legend(handles=[patch1,patch2])

我找到的最接近的解决方案是:Get matplotlib color cycle state但是,如果我理解正确的话,颜色的顺序不会被保留。问题是

ax._get_lines.color_cycle

返回一个迭代器,而不是一个列表,所以我不能轻易地做类似的事情

colour of patch 1 = ax._get_lines.color_cycle[0]

谢谢!

最佳答案

您可以从stackplot制作的polycollection对象中获取颜色:

fields = ax.stackplot(df.index,df.field1,df.field2)
colors = [field.get_facecolor()[0] for field in fields]
patch1=mpl.patches.Patch(color=colors[0],label= 'field 1')
patch2=mpl.patches.Patch(color=colors[1], label ='field 2')

关于python matplotlib : add labels and set their colours correctly for a stackplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31790617/

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