2017-06-13 14 views
-2

私は、histogram2D、contourf、およびmatplotlibを使用してcsvファイルから密度マップをプロットしています。 私の結果に見てみてください。 enter image description herematplotlibの凡例の間隔をカスタマイズする

ので、私の主な要求は、それがに来るとき、私は、例えば0.8の段階でわずか5間隔を持っている必要があり、そして私の伝説の間隔をカスタマイズするホです。私は同様の伝説を必要とするので、基本的に

cmap = plt.cm.get_cmap('Paired', 8) 
cs = m.contourf(xi, yi, g, cmap = cmap) 
cbar = plt.colorbar(cs, orientation='horizontal') 
cbar.set_label('la densite des impacts foudre',size=18) 

# Set borders in the interval [0, 1] 
bound = np.linspace(0, 1, 9) 
# Preparing borders for the legend 
bound_prep = np.round(bound * 7, 2) 
# Creating 8 Patch instances 
plt.legend([mpatches.Patch(color=cmap(b)) for b in bound[:-1]], 
     ['{} - {}'.format(bound_prep[i], bound_prep[i+1] - 0.01) for i in range(8)], bbox_to_anchor=(1.05, 1), loc=2) 
plt.gcf().set_size_inches(15,15) 
plt.show() 

:インターバル> 2.5私はそれがちょうど同じ色の間隔になると、上記の2.5と "により標識したいここ は私が私の凡例をカスタマイズするために使用していたコードですこれに:

enter image description here

アイデア?

+0

私はあなたの望ましい結果を理解する問題を抱えています。あなたは5つの間隔を持っていたいと思っていますが、コードにはすでに8つのレベルがあります。また、間隔が0.8の場合は、3と8分の1の間隔が2.5になります。区間の色は等高線プロットの色とどのように関連していますか? – ImportanceOfBeingErnest

+0

あなたは本当に私の望む結果を本当に理解しているので、私は8つの間隔を持っていますが、私はもちろん、0.8よりも低いステップで6または5の間隔を維持し、2.5までの間隔を1つにする必要があります2.5以上の要約された間隔でユニークな色で表示されます。 –

答えて

1

私はすべてが正しく理解されているかどうかはわかりません。私には、凡例に示されているように、プロットのレベル数と全く同じ数を使用することが理にかなっています。

引数を使用して手動で使用するレベルをcontourfに選択できます。

import matplotlib.pyplot as plt 
import numpy as np 

x= np.linspace(-3,3) 
X,Y = np.meshgrid(x,x) 
Z = np.exp(-(X**2+Y**2)) 

levels = [0,.1,.2,.3,.4,.5,1] 
cmap=plt.cm.get_cmap("Paired") 
colors=list(map(cmap, range(len(levels)))) 


fig,ax=plt.subplots() 
cf = ax.contourf(X,Y,Z, levels=levels, colors=colors) 
fig.colorbar(cf) 

handles = [plt.Rectangle((0,0),1,1, color=c) for c in colors] 
labels = [u"de {} à {}".format(levels[i], levels[i+1]) for i in range(len(levels)-1)] 
labels[-1] = "plus de {}".format(levels[-2]) 
ax.legend(handles, labels) 

plt.show() 

enter image description here

+0

ええ、それは私が探していたものです、あなたの助けをありがとう! –

関連する問題