我正在创建一个叠加的情节。我理解,通过自我实验和在线研究,在堆积图中添加标签很麻烦,但我已设法将其与下面的代码联系起来。
我的问题是:如何检索用于创建堆积图的颜色周期,以便我可以为图例指定正确的颜色?
现在,字段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]
谢谢!
答案 0 :(得分:2)
您可以从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')