2017-02-16 1 views
0

저는 현재 파이썬으로 전환하려고합니다. 현재 gnuplot (gnuplot의 플롯이 첨부되어 있음)으로 플롯 된 그래프를 파이썬으로 재현하려고합니다. Image plotted with gnuplot 그러나 파이썬과 비슷한 것을하려고하면 플롯이 완전히 검게 변합니다. 비슷한 문제를 보았고 pcolormesh 및 imshow를 시도했습니다. 둘 다 같은 결과에. 그러나 오류 메시지는 없습니다.python에서 히트 맵으로 함수를 그리는 방법은 무엇입니까?

`

import numpy as np 

import matplotlib.pyplot as plt 


def f(m,p): 
    return ((m-1)**2*(1-p)*p)/(1+(m-1)*p)**2 

m = np.arange(0.0,10.0,100.0) 

p = np.arange(0.0,0.1,1.0) 

X,Y = np.meshgrid(m, p) 

Z =f(X,Y) 

plt.pcolormesh(X,Y,Z) 

plt.show() 

아마, 내가 어떤 초보자의 실수를하고 있어요 : 여기 내 최소한의 코드 예입니다. 그러나 누군가가 내게 그것을 지적 할 수 있다면 정말 고마워. 미리 감사드립니다.

+2

'm'과'p' 값을보십시오. 나는 그들이 당신이 생각하는 것과 다르지 않다고 생각합니다. – Goyo

+0

@Goyo와 동의하십시오. m과 p는 비어있는 것 같습니다. np.arrange (시작, 끝, 단계) –

답변

0

체크 아웃 numpy.arrange

numpy.arange([start, ]stop, [step, ]dtype=None) 

단계 : 숫자 값 사이의

간격 옵션. 임의의 아웃풋에 대해, 이것은 인접한 두 값, 즉 out [i + 1] - out [i] 사이의 거리 입니다. 기본 단계 크기 은 1입니다. step을 지정하면 start도 지정해야합니다.

그래서 np.arange(0.0,10.0,100.0)[0]과 동일합니다.

import numpy as np 
import matplotlib.pyplot as plt 

def f(m,p): 
    return ((m-1)**2*(1-p)*p)/(1+(m-1)*p)**2 
m = np.arange(0.0,100.0,10.0) 
p = np.arange(0.0,1.0,0.1) 

X,Y = np.meshgrid(m, p) 
Z =f(X,Y) 
plt.pcolormesh(X,Y,Z) 
plt.show() 

그리고 당신은 얻을 것이다 :

는 그리고 나는 이것이 당신이 원하는 어쩌면 생각

희망이 도움이됩니다.

+0

또한 plt.pcolormesh (X, Y, Z, shading = 'gouraud')를 사용하여 질문의 그림과 같이 플롯을 보간하고 부드럽게 만들 수 있습니다. –

+0

고마워요! 그건 내 초심자 실수 였어. Matlab과 같은 방식으로 작동한다고 가정했습니다. 그래서 그것을 지적 해 주셔서 감사합니다. – Jofro

관련 문제