2011-05-17 14 views
7

Matplotlib'de PatchCollection dosyasını bir dosyadan okunan coords ve patch color değerleri ile çiziyorum.matplotlib patchcollection içinde renk aralığını ayarlama

Sorun, matplotlib'in renk aralığını otomatik olarak veri değerlerinin min/maks olarak ölçeklendirmesidir. Renk aralığını manuel olarak nasıl ayarlayabilirim? Örneğin. veri aralığım 10-30 ise, ancak bunu 5-50 renk aralığına ayarlamak istiyorum (örneğin başka bir grafikle karşılaştırmak için), bunu nasıl yapabilirim?

Benim komplo komutları api örnek kodda olduğu kadar aynı görünür: patch_collection.py

colors = 100 * pylab.rand(len(patches)) 
p = PatchCollection(patches, cmap=matplotlib.cm.jet, alpha=0.4) 
p.set_array(pylab.array(colors)) 
ax.add_collection(p) 
pylab.colorbar(p) 

pylab.show() 

cevap

20

kullanın p.set_clim([5, 50]) sizin örnek durumunda renk ölçekleme minimum ve maksimum ayarlayın. Bir renk eşlemesine sahip matplotlib'deki her şey, get_clim ve set_clim yöntemlerine sahiptir. Tam bir örnek olarak

:

import matplotlib 
import matplotlib.pyplot as plt 
from matplotlib.collections import PatchCollection 
from matplotlib.patches import Circle 
import numpy as np 

# (modified from one of the matplotlib gallery examples) 
resolution = 50 # the number of vertices 
N = 100 
x  = np.random.random(N) 
y  = np.random.random(N) 
radii = 0.1*np.random.random(N) 
patches = [] 
for x1,y1,r in zip(x, y, radii): 
    circle = Circle((x1,y1), r) 
    patches.append(circle) 

fig = plt.figure() 
ax = fig.add_subplot(111) 

colors = 100*np.random.random(N) 
p = PatchCollection(patches, cmap=matplotlib.cm.jet, alpha=0.4) 
p.set_array(colors) 
ax.add_collection(p) 
plt.colorbar(p) 

plt.show() 
Şimdi

enter image description here

, sadece biz plt.show(...) diyoruz daha önce bir yerde, biz bu olsun (p yama koleksiyonu olduğu) p.set_clim([5, 50]) eklerseniz: enter image description here

İlgili konular