2013-02-03 31 views
1

我處於一個有趣的情況。 我有圖與軸圖像蟒蛇matplotlib改變圖像的默認軸

IMG http://i49.tinypic.com/35iacrk.jpg

所以,當我嘗試繪製此圖室內用下一個代碼:

plt.figure("Ti Zr") 
ax = plt.subplot(111) 
im = plt.imshow(np.flipud(plt.imread('Ti_ZrB.png')), 
    origin='lower', 
    extent=[0, 800, 1000, 32700]) 
plt.xticks([10,15, 43, 95, 215,542,800]) 
plt.yticks([1000, 1860, 2670, 8600, 16600,32700]) 

plt.axis('normal') 
plt.show() 

上傳圖片之前,我只需要切出的軸數在Corel上。 Finaly我有這個

IMG http://i50.tinypic.com/seuosl.png

正如你所看到的軸已經流離失所,他們是不是在自己的一席之地。 通常我用這種方法來繪製圖表,之前我沒有任何問題。 但現在我沒有任何想法。 預先感謝您。我將非常感謝您的幫助

+3

您的原件具有非線性軸,可能是對數。要匹配刻度,你需要弄清楚這個函數是什麼。 – tacaswell

+0

那麼我怎麼才能理解這種方式只有它才能找到這個功能呢? –

+0

繪製蜱的像素位置與其上的數字,並嘗試猜測。 – tacaswell

回答

4

您可以在matplotlib中使用鼠標點擊事件輕鬆確定滴答的座標,而不是猜測它。

import numpy as np 
import matplotlib.pyplot as plt 

def tell_click_coordinates(event): 
    print "X: %.0f, Y: %.0f" % (event.xdata, event.ydata) 

fig = plt.figure("Ti Zr") 
fig.canvas.mpl_connect("button_press_event", tell_click_coordinates) 

ax = plt.subplot(111) 
im = plt.imshow(np.flipud(plt.imread('14675002_in.png')), 
    origin='lower', 
    extent=[0, 800, 1000, 32700]) 
plt.xticks([10,15, 43, 95, 215,542,800]) 
plt.yticks([1000, 1860, 2670, 8600, 16600,32700]) 

plt.axis('normal') 
plt.show() 

前一後點擊一個刻度會給你:

X: 6, Y: 1576 
X: 6, Y: 6902 
X: 10, Y: 13037 
X: 8, Y: 20415 
X: 11, Y: 26383 
X: 76, Y: 2177 
X: 260, Y: 1846 
X: 494, Y: 1846 
X: 594, Y: 1680 
X: 715, Y: 1928 

然後,您可以用這些值來調整你的情節:

import numpy as np 
import matplotlib.pyplot as plt 

fig = plt.figure("Ti Zr") 

ax = plt.subplot(111) 
im = plt.imshow(np.flipud(plt.imread('14675002_in.png')), 
    origin='lower', 
    extent=[0, 800, 1000, 32700]) 
plt.xticks([76,260,494,594,715,800],[10,15, 43, 95, 215,542,800]) 
plt.yticks([1576,6902, 13037, 20415, 26383, 32700],[1000, 1860, 2670, 8600, 16600,32700]) 

plt.axis('normal') 
plt.show() 

,你會得到

result

+0

非常感謝!這是非常有用的,所有我需要的) –

+0

如果我想調整數百個刻度,該怎麼辦?我是否必須點擊圖上的確切數字? – AnnabellChan