熊猫.boxplot属性不起作用

熊猫.boxplot属性不起作用

问题描述:

我想自定义从数据框中创建的boxplot,使用whiskerprops,capprops,medianprops但我设置的参数不起作用。熊猫.boxplot属性不起作用

例如

import pandas as pd 
import matplotlib.pyplot as plt 

df=pd.DataFrame(index = [x for x in range(0,10)]) 
for col in range(1,5): 
    df[col]= df.index * col/10 

fig, ax = plt.subplots() 
bp = df.plot.box(
      ax=ax, 
      whis=[5, 95], 
      showcaps=True, 
      showfliers=False, 
      whiskerprops = {'color':'k','linewidth':0.5,'linestyle':'solid'}, 
      capprops={'color': 'k', 'linewidth': 0.5, 'linestyle': 'solid'}, 
      medianprops = {'color':'k','linewidth': 0.5, 'linestyle': 'solid'} 
      ) 
plotFile = 'C:\\Desktop\\example.png' 
fig.savefig(plotFile, dpi=1000) 

我期待着与胡须,帽子和中位数全黑色的箱线图,但我得到这个: 尾巴是蓝色和中位数为绿色。为什么参数被忽略?

example boxplot

而不是调用了每个属性,并试图改变颜色的,只是使用color参数并改变每个属性存在的颜色:

test = df.plot.box(color = {'whiskers' : 'black', 
          'caps' : 'black', 
          'medians' : 'black', 
          'boxes' : 'black'}) 
plt.show() 

graph

编辑

以下是您可以如何编辑linewidth

test = df.plot.box(color = {'whiskers' : 'black', 
          'caps' : 'black', 
          'medians' : 'black', 
          'boxes' : 'black'}, 
        whiskerprops = {'linewidth' : 4}, 
        flierprops = {'linewidth' : 4}, 
        medianprops = {'linewidth' : 4}, 
        boxprops = {'linewidth' : 4}) 

plt.show() 

plot2

文档:https://pandas.pydata.org/pandas-docs/stable/visualization.html#box-plots

+0

大。谢谢。 (之前我曾尝试过,但是使用'df.boxplot'而不是'df.plot.box'。出于某种原因,'color'不适用于'.boxplot'。)是否有等效的'linewidth'参数? – doctorer

+0

有。请参阅我的编辑。 –

+0

谢谢伊恩。奇怪的是,不同的参数需要不同的方法。而'whiskerprops'等不能用来定义颜色。 – doctorer