2017-05-09 1 views
2

히스토그램을 생성하는이 코드는 세 가지 유형의 필드를 식별합니다. "저", "중간"및 "높은"matplotlib 히스토그램 (범례 포함)

이 생산
import pylab as plt 
import pandas as pd 


df = pd.read_csv('April2017NEW.csv', index_col =1) 
df1 = df.loc['Output Energy, (Wh/h)'] # choose index value and Average 
df1['Average'] = df1.mean(axis=1) 

N, bins, patches = plt.hist(df1['Average'], 30) 

cmap = plt.get_cmap('jet') 
low = cmap(0.5) 
medium =cmap(0.25) 
high = cmap(0.8) 


for i in range(0,4): 
    patches[i].set_facecolor(low) 
for i in range(4,11): 
    patches[i].set_facecolor(medium) 
for i in range(11,30): 
    patches[i].set_facecolor(high) 

plt.xlabel("Watt Hours", fontsize=16) 
plt.ylabel("Households", fontsize=16) 
plt.xticks(fontsize=14) 
plt.yticks(fontsize=14) 
ax = plt.subplot(111) 
ax.spines["top"].set_visible(False) 
ax.spines["right"].set_visible(False) 

plt.show() 

:

enter image description here

가 어떻게이 세 가지 색상 거기에 전설을받을 수 있나요?

답변

3

자신 만의 범례를 만들어야합니다. 이를 위해 그림에 표시되지 않은 일부 직사각형을 만듭니다 (프록시 아티스트라고 함).

#create legend 
handles = [Rectangle((0,0),1,1,color=c,ec="k") for c in [low,medium, high]] 
labels= ["low","medium", "high"] 
plt.legend(handles, labels) 

전체 예제 :

import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib.patches import Rectangle 

data = np.random.rayleigh(size=1000)*35 

N, bins, patches = plt.hist(data, 30, ec="k") 

cmap = plt.get_cmap('jet') 
low = cmap(0.5) 
medium =cmap(0.25) 
high = cmap(0.8) 


for i in range(0,4): 
    patches[i].set_facecolor(low) 
for i in range(4,11): 
    patches[i].set_facecolor(medium) 
for i in range(11,30): 
    patches[i].set_facecolor(high) 

#create legend 
handles = [Rectangle((0,0),1,1,color=c,ec="k") for c in [low,medium, high]] 
labels= ["low","medium", "high"] 
plt.legend(handles, labels) 

plt.xlabel("Watt Hours", fontsize=16) 
plt.ylabel("Households", fontsize=16) 
plt.xticks(fontsize=14) 
plt.yticks(fontsize=14) 

plt.gca().spines["top"].set_visible(False) 
plt.gca().spines["right"].set_visible(False) 

plt.show() 

enter image description here