2017-12-07 4 views
1

matplotlib에서 밀도로 채색 된 분산 형 플롯을 만들려면 어떻게해야합니까? 컬러 막대를 그릴 때 밀도 스케일을 표시하지만 대신 카운트/백분율을 원합니다. 밀도 계산을 빈도 카운트로 변환하는 방법은 무엇입니까? 사람이 종이에 표시된 것과 유사한 플롯을 그릴 나를 인도 할 수있는 경우 https://www.atmos-meas-tech.net/9/3293/2016/amt-9-3293-2016.pdf2D 밀도 또는 주파수 분포도 파이썬에서

, 정말 도움이 될 것입니다 :

예상 결과는 본 논문의 8 페이지의 그림 3이다. 미리 감사드립니다.

import numpy as np 
import matplotlib.pyplot as plt 
from scipy.stats import gaussian_kde 

# Generate fake data 
x = np.random.normal(size=1000) 
y = x * 3 + np.random.normal(size=1000) 

# Calculate the point density 
xy = np.vstack([x,y]) 
z = gaussian_kde(xy)(xy) 

fig, ax = plt.subplots() 
cax=ax.scatter(x, y, c=z, s=10, cmap=plt.cm.jet) 
cbar = fig.colorbar(cax) 
plt.show() 

또 다른 방법은 시도 :

#libraries 
import matplotlib.pyplot as plt 
import numpy as np 
from scipy.stats import kde 

# create data 
x = np.random.normal(size=500) 
y = x * 3 + np.random.normal(size=500) 


# Evaluate a gaussian kde on a regular grid of nbins x nbins over 
nbins=50 
k = kde.gaussian_kde([x,y]) 
xi, yi = np.mgrid[min(x):max(x):nbins*1j, min(y):max(y):nbins*1j] 
zi = k(np.vstack([xi.flatten(), yi.flatten()])) 

# Add color bar 
plt.pcolormesh(xi, yi, zi.reshape(xi.shape), cmap=plt.cm.jet) 
plt.colorbar() 
plt.show() 
히스토그램, 그냥 그리드에 KDE를 샘플링 것 아니에요
+0

수는 bin 크기에 묶여 있습니다. 그래서 어떤 종류의 히스토그램을 만들지 않으면 질문이 많은 의미를 갖지 않는 것 같습니다. – Julien

+0

@Julien 친절하게도 몇 가지 해결책을 제안 할 수 있습니까? 이에? –

+0

글쎄, 내가 말했듯이 : 빈 크기를 정의하고 히스토그램을 생성 ... – Julien

답변

0

...

이 시도 : plt.hist2d(x, y)

bins=whatever 인수와 ma를 사용하여 저장소를 지정할 수 있습니다. ny more options ...

+0

입력 해 주셔서 감사합니다. hist2d를 사용하여 플로팅을 시도했습니다. 2D 히스토그램을 만듭니다. 사실 저는 종이에있는 플롯과 정확히 같은 플롯을 만들고 싶습니다. 나는 분산 점을 원하고 밀도로 채색하지만, 빈도수 나 백분율의 형태로 색 눈금을 원합니다. –

+0

그래도 여전히 의미가 없습니다 : 확률 분포의 단일 지점의 "개수"또는 "백분율"은 0이며 밀도 만이 단일 지점에서 의미가 있습니다. 유한 한 "카운트"또는 "백분율"값을 원할 경우 단일 포인트가 아닌 간격을 고려해야합니다 ... 나는 당신이하고 싶은 것을 자신에게 명확히해야한다고 생각합니다. – Julien