5
contour
işlevinin kullandığı renk eşlemesine göre bir noktayı renklendirmenin bir yolu var mı? Bir renk haritası belirtebileceğimin farkındayım, ancak muhtemelen contour
işlevi bazı verilerin ölçeklendirilmesini ve/veya normalleştirilmesini sağlıyor mu? ... değerler Buna göreRenk noktaları kontür rengine göre
import numpy as np
import scipy.stats as ss
def plot_2d_probsurface(data, resolution=20, ax = None, xlim=None, ylim=None):
# create a function to calcualte the density at a particular location
kde = ss.gaussian_kde(data.T)
# calculate the limits if there are no values passed in
# passed in values are useful if calling this function
# systematically with different sets of data whose limits
# aren't consistent
if xlim is None:
xlim = (min(data[:,0]), max(data[:,0]))
if ylim is None:
ylim = (min(data[:,1]), max(data[:,1]))
# create some tick marks that will be used to create a grid
xs = np.linspace(xlim[0], xlim[1], resolution)
ys = np.linspace(ylim[0], ylim[1], resolution)
# wrap the KDE function and vectorize it so that we can call it on
# the entire grid at once
def calc_prob(x,y):
return kde([x,y])[0]
calc_prob = vectorize(calc_prob)
# check if we've received a plotting surface
if ax is None:
fig = plt.figure(figsize=(6,6))
ax = fig.add_subplot(1,1,1)
# create the grid and calculate the density at each point
X,Y = np.meshgrid(xs, ys)
Z = calc_prob(X,Y)
# the values according to which the points should be colored
point_values = kde(data.T)
# plot the contour
cont = ax.contour(X,Y,Z)
#print cont
ax.plot(data[:,0], data[:,1], 'o')
return (None, None)
data_x = np.random.random((50,2))
cont = plot_2d_probsurface(data_x)
Yani aşağıda arsa içinde, en yüksek yoğunluklu noktaları renkli olacağını kahverengi, sonraki turuncu, sonraki sarı, vs: Burada
bir örnek noktalar renkli olmalıdırpoint_values
. Bu sadece renklere dönüştürülmeli ve
plot
işlevine geçirilmelidir. Ama onları
contour
çiziminde nasıl ölçeklendiririm?
scatter
için
plot
değişen ve
c=point_values
parametre olarak nokta değerleri geçen kadar basit gibi görünen
Kudos kendi sorunuzu cevaplamak için! Sadece FYI: Renkler tam olarak eşleşmeyecek. Kontür renkler, min ve maksimum kontura ölçeklenirken, dağılım renkleri min ve maksimum değerlere ölçeklendirilir. Bunun etrafında hızlı bir şekilde "cont = ax.contour (...)' ve "ax.scatter (x, y, c = z, cmap = cont.cmap, norm = cont.norm)" gibi bir şey yapmaktır. '. Bu, renklendirmeyi (konturun kullanacağı gibi) ayırmak yerine sürekli bir sürekli verecektir, ancak ölçekleme aynı olacaktır. (Eğer gerçekten ayrı bir renk eşlemesine ihtiyacınız varsa, 'plt.get_cmap (" name ", N)' kullanın.) –
Teşekkürler! Tam olarak ne soruyordum. Bunu bir cevap olarak formüle etmek istiyorsanız, bunu sorduğum soruya daha doğru ve kesin bir cevap olduğu için kabul edeceğim :) –