2017-10-08 11 views
1

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

답변

2

대신 각 속성을 호출하고 색상을 변경하려고의 단지 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.plot.box' 대신에'df.boxplot'을 사용했습니다. 어떤 이유로'.boxplot'에서는'color'가 작동하지 않습니다.)'linewidth' 매개 변수? – doctorer

+0

있습니다. 내 편집 내용을 확인하십시오. –

+0

감사합니다. Ian. 다른 매개 변수가 다른 접근법을 필요로하는 것은 이상합니다. 그리고 그 '위스키 현상'등은 색상을 정의하는 데 사용할 수 없습니다. – doctorer