如何更改DataFrame中堆叠面积图的填充颜色?

5
我想在使用Pandas.Dataframe绘制的堆叠区域图中更改填充颜色。
import pandas as pd
df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
ax = df.plot.area(linewidth=0);

区域图示例

现在我猜测,plot函数返回的实例提供了修改颜色等属性的访问方式。

但是轴类太复杂了,无法快速学习。我在 Stack Overflow 中也没有找到类似的问题。

所以,有没有大师可以帮帮我呢?

3个回答

4
技巧在于使用“color”参数:
解决方案1:字典 只需传递一个{列名:颜色}的字典即可。
df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'], )

ax = df.plot.area(color={'b':'0', 'c':'#17A589', 'a':'#9C640C', 'd':'#ECF0F1'})

解决方案2:序列
只需传递一系列颜色代码(它将匹配您的列的顺序)。

df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'], )

ax = df.plot.area(color=('0', '#17A589', '#9C640C', '#ECF0F1'))

不需要设置线宽度(颜色会自动调整)。此外,这不会影响图例。

3

使用 'colormap' (详见文档):

ax = df.plot.area(linewidth=0, colormap="Pastel1")

enter image description here


0

Matplotlib的API非常复杂,但是artist模块提供了非常简单的说明。对于条形图/barh图,属性可以通过.patches进行访问和修改,但对于区域图,需要使用.collections

要实现特定的修改,请使用以下代码。

import pandas as pd
df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
ax = df.plot.area(linewidth=0);

for collection in ax.collections:
    collection.set_facecolor('#888888')

highlight = 0
ax.collections[highlight].set_facecolor('#aa3333')

可以通过运行找到集合的其他方法

dir(ax.collections[highlight])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接