如何更改 DataFrame 中堆叠区域图的填充颜色?
How can I change the filled color of stacked area plot in DataFrame?
我想更改用 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);
The area plot example
现在我猜 plot 函数的实例 return 提供了修改颜色等属性的权限。
但是坐标轴 类 太复杂了,学不会很快。而我在Stack Overflow中也没有找到类似的问题。
所以哪位高手能帮个忙吗?
使用'colormap'(详见document):
ax = df.plot.area(linewidth=0, colormap="Pastel1")
matplotlib的API确实很复杂,但是这里artist Module给出了一个非常通俗易懂的例子。对于 bar/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')
collections的其他方法可以参考运行
dir(ax.collections[highlight])
诀窍是使用 'color' 参数:
解决方案 1:字典
只需传递 {column name: color}
的字典
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'))
无需设置线宽(会自动调整颜色)。此外,这不会与图例混淆。
我想更改用 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);
The area plot example
现在我猜 plot 函数的实例 return 提供了修改颜色等属性的权限。
但是坐标轴 类 太复杂了,学不会很快。而我在Stack Overflow中也没有找到类似的问题。
所以哪位高手能帮个忙吗?
使用'colormap'(详见document):
ax = df.plot.area(linewidth=0, colormap="Pastel1")
matplotlib的API确实很复杂,但是这里artist Module给出了一个非常通俗易懂的例子。对于 bar/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')
collections的其他方法可以参考运行
dir(ax.collections[highlight])
诀窍是使用 'color' 参数:
解决方案 1:字典
只需传递 {column name: color}
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'))
无需设置线宽(会自动调整颜色)。此外,这不会与图例混淆。