2016-09-02 5 views
2

pandasユーティリティ機能を使用して描画されたボックスプロットの色を変更する必要があります。私はcolor引数を使用してほとんどのプロパティを変更できますが、ボックスのfacecolorを変更する方法を理解することはできません。誰かがそれを行う方法を知っていますか?私はまだパンダでプロットインターフェースを介してseabornと生matplotlibのをお勧めしますがパンダのボックスプロットの面色を変更

import pandas as pd 
import numpy as np 
data = np.random.randn(100, 4) 
labels = list("ABCD") 
df = pd.DataFrame(data, columns=labels) 
props = dict(boxes="DarkGreen", whiskers="DarkOrange", medians="DarkBlue", caps="Gray") 
df.plot.box(color=props) 
+3

私はこのために生のマットプレートまたはシーボーンを使用する必要があると思います。パンダのプロット機能は便宜上のものです。 –

答えて

2

、それはあなたが合格れる、にkwargとして渡しなる、df.plot.boxにkwargとしてpatch_artist=Trueを渡すことができることが判明しますkwargとしてmatplotlib.Axes.boxplotになります。

import pandas as pd 
import numpy as np 
data = np.random.randn(100, 4) 
labels = list("ABCD") 
df = pd.DataFrame(data, columns=labels) 
props = dict(boxes="DarkGreen", whiskers="DarkOrange", medians="DarkBlue", caps="Gray") 
df.plot.box(color=props, patch_artist=True) 

enter image description here

+0

素晴らしい!これは機能します。ええ、同意しました - 私はたいてい 'matplotlib 'を直接使うことも好きです。 –

+0

これは今日私を救った;)ありがとう –

0

示唆したように、私は生のmatplotlibを使用して、これをプロットする関数を作成しまいました。

def plot_boxplot(data, ax): 
    bp = ax.boxplot(data.values, patch_artist=True) 

    for box in bp['boxes']: 
     box.set(color='DarkGreen') 
     box.set(facecolor='DarkGreen') 

    for whisker in bp['whiskers']: 
     whisker.set(color="DarkOrange") 

    for cap in bp['caps']: 
     cap.set(color="Gray") 

    for median in bp['medians']: 
     median.set(color="white") 

    ax.axhline(0, color="DarkBlue", linestyle=":") 

    ax.set_xticklabels(data.columns)