2017-09-19 13 views
-1

私はヒストグラムを持つサブプロットを持っています。一番下にあるplt.legendは、色が繰り返される凡例を作成します。部分グラフの一部のこのスクリーンショットでは、python matplotlib legend repeat

「覚醒」は「SLEEP-REM」と同じ色である

彼らがなるように、私はグラフや伝説の色を変更するにはどうすればよいですすべてユニーク?

def create_histogram(grouped, axs, df): 
    bin_size = 100 
    alpha = 0.5 
    grouped = df.groupby('Label') 

    bins = np.linspace(df.Capacitor_1.min(), df.Capacitor_1.max(), bin_size) 
    series = grouped.Capacitor_1 
    series.plot(kind = 'hist', title = "Capacitor 1", ax = axs[0][0] , bins = bins, alpha = alpha) 

    ... 

    bins = np.linspace(df.Mag_Z.min(), df.Mag_Z.max(), bin_size) 
    series = grouped.Mag_Z 
    series.plot(kind = 'hist', title = "Mag Z", ax = axs[3][2], bins = bins, alpha = alpha) 

fig, axs = plt.subplots(nrows = 4, ncols = 3, figsize = (20, 40)) 
fig.subplots_adjust(hspace = .5) 
grouped = df_left.groupby('Label') 
create_histogram(grouped, axs, df_left) 
plt.legend(bbox_to_anchor = (0.98, 0.8)) 
plt.show() 
+0

をあなたは(サイ)の色の独自のセットを定義します。 https://matplotlib.org/examples/color/color_cycle_demo.htmlの簡単な例、および利用可能な色はhttps://matplotlib.org/gallery.html#colorです。 – Evert

+0

@あなたのコメントを助けてくれました。ありがとう。 –

答えて

0

について@Evertからのコメントは、あなたが(サイ)の色の独自のセットを定義

を助けました。 matplotlib.org/examples/color/color_cycle_demo.htmlの簡単な例と利用可能な色はmatplotlib.org/gallery.html#colorです。 - エバート

は、私はデフ機能の上にこのようなpyplotを変更:

import matplotlib.pyplot as plt 
from cycler import cycler 

palette = ['#ff0000', '#663600', '#a3cc00', '#80ffc3', '#0088ff', '#d9bfff', '#a6296c', '#8c4646', '#ff8800', '#5e664d', '#269991', '#1d3f73', '#7e468c', '#d96236', '#7f2200'] 

# 1. Setting prop cycle on default rc parameter 
plt.rc('lines', linewidth = 4) 
plt.rc('axes', prop_cycle = (cycler('color', palette))) 
+0

あなたもリンクをコピーしていません。 – Evert

+0

おそらく、コードを正しく動作させていれば、自分の色を定義した行を回答に追加できますか?あなたの答えに実用的なコードがあるように。 – Evert

+0

ok私の例にリンクとコードを追加しました –

0

plotcolor引数を持っています。列ごとに異なる色を使用できます。例

import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 

n_columns = 4 
df = pd.DataFrame(
    np.random.randn(1000, n_columns), 
    columns=['col{}'.format(i) for i in range(n_columns)] 
) 

df.col0.plot(kind='hist', color='b') 
df.col1.plot(kind='hist', color='c') 
df.col2.plot(kind='hist', color='g') 
df.col3.plot(kind='hist', color='k') 

plt.legend()