2017-09-19 48 views
-1

我有一個直方圖的副圖。底部的plt.legend創建了一個重複顏色的圖例。在這張截圖的子圖的一部分,python matplotlib圖例重複

「激醒」是相同的顏色爲「睡眠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這樣的功能DEF以上:

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

好的我在我的示例中添加了鏈接和代碼 –

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()