【发布时间】:2015-08-03 15:01:15
【问题描述】:
我正在创建一个堆叠图。我通过自己的实验和在线研究了解到,将标签添加到堆叠图很麻烦,但我已经设法使用下面的代码完成了。
我的问题是:如何检索用于创建堆叠图的颜色循环,以便为图例分配正确的颜色?
现在字段 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]
谢谢!
【问题讨论】:
-
有什么原因不能从迭代器中列出,例如:
list(ax._get_lines.color_cycle)? -
我不知道为什么,但它不起作用。我尝试运行它,python 似乎卡住了:1 多分钟后,仍然没有。它可能与 matplotlib 的许多未记录或记录不充分的功能之一有关。如果有人解释为什么它不起作用,我会最感兴趣。
-
PS 实际上,尝试 colors= list(ax._get_lines.color_cycle) 使整个 IDE (Spyder) 崩溃了 3 次,我不知道为什么...
标签: python matplotlib