2016-08-15 2 views
2

저는 python 3을 사용합니다. x와 y의 두 변수가 있습니다. 여기서 x는 1에서 5까지이고 y는 0.03에서 0.7 사이이고 x와 y를 취하는 메소드가 있습니다. 스칼라 번호를 생성합니다. x 축을 y, y 축을 y, f (x, y)를 나타내는 색상 키를 사용하여 히트 맵 유형 그림을 만들고 싶습니다. 어떻게 이뤄지나요? 난 heatmaps를 사용하여 시도했지만 cans는 x와 y의 쾌적한 범위를 얻을 수없는 범위 때문에 작동하도록하는 것처럼 보입니다. 여기에 내가 발견 한 예이고 그게 내가히트 맵을 사용하여 2 개의 변수를 그려야합니다.

import numpy as np 
import numpy.random 
import matplotlib.pyplot as plt 


x = np.random.randn(8873) 
y = np.random.randn(8873) 

heatmap, xedges, yedges = np.histogram2d(x, y, bins=50) 
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] 

plt.clf() 
plt.imshow(heatmap, extent=extent) 
plt.show() 

무엇을 찾고 있어요에 가까운하지만 컬러가 키

답변

0

와 f (x, y)를 표현하고자하는 것은 z = f(x, y) 말할 수 있습니다. 히트 맵의 키는 하나의 차원 만 나타낼 수 있습니다 (일반적으로 z).

2 차원 플로팅 방법 f (x, y)에

를 대표하여 당신이 무엇을 의미합니까, 당신은 3 차원 히트 맵을해야합니다.

+0

의 샘플 출력 enter image description here 요청 치수 – JLT

+0

@ JLT 당신 말이 맞습니다. 'heatmap (x, y, f (x, y))'는 3 차원입니다. –

1

는 2 차원의 격자 xy의 함수를 계산하기 위해 2 차원 벡터 모노 -, 및 xy 시작할 경우에는 생성이 제 numpy.meshgrid 포인트를 이용하여, 상기 2 차원 격자.

그것은 당신이 그리드를 얻을 수 있는지 어떻게 든 놀라운
from numpy import linspace, meshgrid 
x, y = linspace(1, 5, 41), linspace(0.03, 0.70, 68) 
X, Y = meshgrid(x, y) 

... 하나는 (당신이 X을 인쇄 단지가 있고 Y을 직접 볼)에만 x 값과 다른 경우에만 y 값을 포함 .

두 격자를 사용할 수있는 경우 결과 표를 계산할 수 있지만 numpyufuncs ...을 사용하는 경우에만 사용할 수 있습니다.

def f(x, y): 
    from numpy import sin, sqrt 
    return sin(sqrt(x*x+y*y)) 

결국 당신이 당신의 결과를 플롯 할 수 있습니다, 당신은 사용할 pyplot 방법은 pcolor, 당신이 pyplotcolorbar 방법에서 항상 사용하는 가지고 년 Colorbar을 ... 추가

from matplotlib.pyplot import colorbar, pcolor, show 
Z = f(X, Y) 
pcolor(X, Y, Z) 
colorbar() 
show() 
이 점은 결국 도달

는 전통 색상은 3을 대표하는 모든

+0

다른 기능에 대해 산점도를 사용할 수도 있습니다. 예 : plt.scatter (X, Y, C = Z, 알파 = 0.8, cmap = 'viridis', marker = 's') – JLT

관련 문제