2017-11-03 13 views
0

私は、特定の色(rgb値で指定)でそれぞれ数行を数えて、Pandas DataFrameをプロットしています。私は、シーケンスを列挙する代わりに、プロットラインの色を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 

が、多くの2行以上で、私は本当に維持するためにコードを簡単にするために、列ヘッダーで色を指定できるようにしたいのですが。このように:

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

colorsキーワードは実際には辞書にはなりません。

pd.DataFrame.plotmatplotlib.pyplot.plotを継承していますが、colorsキーワードのドキュメントは見つかりません。この記事の内容は予告なしに変更されることがありますので、あらかじめご了承ください。 2つの方法に関する文書のいずれも、そのようなキーワードを列挙していない。

+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

0

あなたはdf[cols]にプロットする前に、列の順序を指定することができます。

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) 

example plot

あなたは必ず列や色にしたい場合は厳密にペアリングされています、あなたはいつもzipの前にいつでもできる:

columns_and_colors = zip(cols, colors) 
df[cols].plot(colors = [cc[1] for cc in columns_and_colors]) 
関連する問題