代码之家  ›  专栏  ›  技术社区  ›  chrise

Python matplotlib如何将颜色映射到饼图中的“x值”

  •  1
  • chrise  · 技术社区  · 6 年前

    我有一个看起来像

    df=pd.DataFrame({'product': [0,0,1,1,1,1,1,2,2,2], 'market': [1,2,1,2,5,6,7,1,6,7], 'value': [500,300,100,200,400,100,200,100,300,900]})
    fig, axes = plt.subplots(nrows=1, ncols=3)
    for m in range(3):
        df.loc[df['product']==m].plot(ax=axes[m], kind='pie', y='value', figsize=(15,5))
    

    Plot

    如果这是不可能的,是否有人有任何其他的建议如何实现这一点,也许通过添加虚拟行在一个半优雅的方式?

    注意。我正在熊猫上使用py3.6和最新版本

    1 回复  |  直到 6 年前
        1
  •  3
  •   ImportanceOfBeingErnest    6 年前

    您可以为不同类别创建查找字典,并使用它为每个饼图创建颜色列表。

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    df=pd.DataFrame({'product': [0,0,1,1,1,1,1,2,2,2], 
                     'market': [1,2,1,2,5,6,7,1,6,7], 
                     'value': [500,300,100,200,400,100,200,100,300,900]})
    
    cdict = dict(zip(np.unique(df["market"].values), plt.cm.tab10.colors))
    
    fig, axes = plt.subplots(nrows=1, ncols=3)
    for m in range(3):
        data = df.loc[df['product']==m]
        data.plot(ax=axes[m], kind='pie', y='value', figsize=(15,5), 
                  colors=[cdict[v] for v in data["market"]])
    
    plt.show()
    

    enter image description here