2017-11-03 11 views
0

저는 몇 줄의 팬더 데이터 프레임을 각각의 특정 색상 (rgb 값으로 지정)으로 플로팅하고 있습니다. 나는 순서대로 나열하는 대신 DataFrame 열 이름에 플롯 선 색상을 직접 할당하여 코드를보다 쉽게 ​​읽을 수있는 방법을 찾고 있습니다.Pandas Dataframe : 열 이름별로 색상을 지정하십시오.

는 내가이 작업을 수행 할 수 있습니다 알고

import pandas as pd 

df = pd.DataFrame(columns=['red zero line', 'blue one line'], data=[[0, 1], [0, 1]]) 
df.plot(colors = ['#BB0000', '#0000BB']) # red amd blue 

하지만 많은 두 개 이상의 라인

, 나는 정말 유지하는 코드를 쉽게하기 위해, 열 헤더의 색상을 지정할 수 있도록하고 싶습니다 . 예 :

df.plot(colors = {'red zero line': '#FF0000', 'blue one line': '#0000FF'}) 

colors 키워드는 실제로 사전이 될 수 없습니다. (기술적으로는 열 레이블의 목록을 얻을 수 목록에 입력 변환입니다.)

내가 matplotlib.pyplot.plot에서 pd.DataFrame.plot 상속는하지만 난 colors 키워드에 대한 문서를 찾을 수없는 것으로 알고 있습니다. 두 가지 방법에 대한 문서는 그러한 키워드를 나열하지 않습니다.

+0

방금 ​​처음에 사전에 넣은 다음 값을 꺼내지 못했습니다? – 0TTT0

답변

2

열 이름을 색으로 매핑하는 사전을 만드는 경우 열 이름의 색을 get으로 지정하면 목록 이해를 사용하여 즉시 색 목록을 작성할 수 있습니다. 또한 열을 놓친 경우를 대비하여 기본 색상을 지정할 수 있습니다.

import pandas as pd 
import matplotlib.pyplot as plt 

df = pd.DataFrame([[0, 1, 2], [0, 1, 2]], 
        columns=['red zero line', 'blue one line', 'extra']) 

color_dict = {'red zero line': '#FF0000', 'blue one line': '#0000FF'} 

# use get to specify dark gray as the default color. 
df.plot(color=[color_dict.get(x, '#333333') for x in df.columns]) 
plt.show() 

enter image description here

당신은 df[cols]와 함께 음모를 꾸미고 전에 열 순서를 지정할 수 있습니다
0

:

example plot

확실 기둥과 색상이 엄격하게 짝 싶은 경우

import pandas as pd 

cols = ['red zero line', 'blue one line', 'green two line'] 
colors = ['#BB0000', '#0000BB', 'green'] 
df = pd.DataFrame(columns=cols, data=[[0, 1, 2], [0, 1, 2], [0, 1, 3]]) 

df[cols].plot(colors = colors) 
, 당신은 항상 zip 앞에 올 수 있습니다 :

columns_and_colors = zip(cols, colors) 
df[cols].plot(colors = [cc[1] for cc in columns_and_colors])