2014-10-22 120 views
-2

通常當我想以可視化的三維數據我做了以下Python/PyPlot-如何在plt.imshow上指定x/y軸?

import numpy as np 
import matplotlib.pyplot as plt 

X, Y = np.mgrid[:10, :20] 
z = x**2 + y 
plt.imshow(z) 
plt.show() 

的這個問題是我常常想設置的而不是「像素」 x和y的變量。我知道plt.contourf我想要做什麼,但與這個問題是質量接近不如plt.imshow

的解決方案我想對正在得到plt.contourf語法來plt.imshow攜手任何地方。

任何想法?

編輯:

該解決方案還應該在以下使用情況下工作:

import numpy as np 
import matplotlib.pyplot as plt 

R, P = np.mgrid[:10, :2*np.pi:np.pi/50] 
plt.contourf(R*np.cos(P), R*np.sin(P), R) # <--- need better function 
# plt.imshow(R*np.cos(P), R*np.sin(P), R) #  something like this 
plt.show() 
+0

'範圍'kwarg。 – tacaswell 2014-10-22 03:41:44

+0

我給這個問題增加了一些信息,並且從簡要的看,我認爲它不適用於我發佈的新用例 – evan54 2014-10-22 03:48:07

+1

然後請問一個新問題,詢問您的實際問題。我懷疑答案會是meshgrid。 – tacaswell 2014-10-22 04:04:25

回答

0

我發現這樣做我想要什麼,最好的辦法是使用plt.contourf

所以下面會做我想要的。

import numpy as np 
import matplotlib.pyplot as plt 

R, P = np.mgrid[:10, :2*np.pi:np.pi/50] 
N = 50 
plt.contourf(R*np.cos(P), R*np.sin(P), R, N) # <--- need better function 
plt.pcolormesh(R*np.cos(P), R*np.sin(P), R) # <--- exactly what I want 
# plt.imshow(R*np.cos(P), R*np.sin(P), R) #  something like this 
plt.show() 

調整N讓你在contourf足夠好的圖像。我唯一不喜歡的就是你可能需要調整N的價值。