【问题标题】:How can I change the filled color of stacked area plot in DataFrame?如何更改 DataFrame 中堆叠区域图的填充颜色?
【发布时间】:2018-09-10 08:22:37
【问题描述】:

我想更改用 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 函数返回的实例提供了修改颜色等属性的访问权限。

但是轴类太复杂了,无法快速学习。而且我没能在 Stack Overflow 上找到类似的问题。

那么有哪位大师可以帮我一个忙吗?

【问题讨论】:

    标签: pandas matplotlib plot area stacked


    【解决方案1】:

    诀窍是使用“颜色”参数:

    解决方案 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'))
    

    无需设置线宽(它会自动调整颜色)。此外,这不会与传说混淆。

    【讨论】:

      【解决方案2】:

      matplotlib 的 API 确实很复杂,但是这里artist Module 给出了一个非常简单的说明。对于条形图,属性可以通过.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')
      

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

      dir(ax.collections[highlight])
      

      【讨论】:

        【解决方案3】:

        使用“颜色图”(有关详细信息,请参阅document):

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

        【讨论】:

          猜你喜欢
          • 2015-06-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-12
          • 1970-01-01
          • 1970-01-01
          • 2012-02-06
          相关资源
          最近更新 更多