2015-04-20 49 views
1

我想在範圍20000一些Y數據繪製到50000matplotlib如何繪製與yticks和水平網格線半對數曲線圖隔開對數

我想y軸從10000到60000中的5000步。
我想Y軸是一個對數圖。我試過ax1.set_yscale('log')。這給出了一個日誌圖,但沒有水平網格線和沒有y刻度。

如何在兩個方向上獲得網格線,並且y刻度以10000,15000等等的間隔記錄間距?

我試圖得到一個y軸的規模這樣

enter image description here

我使用的是在Python 2.5.2以下代碼:

fig = pl.figure() 
rcParams['figure.figsize'] = 14, 10 # set graph size 
ax1 = fig.add_subplot(1, 1, 1) 
ax1.plot(do,line,'r-', do,ind,'g-') 
ax1.grid(True) 
pl.xticks(do,rotation=45) 
ax1.set_xlim([date1, date2]) 
ax1.set_yscale('log') 
pl.show() 

我可以計算log(line)log(ind)和做一個線性圖,但圖不會提供信息!

+0

當我點擊鏈接時圖像不可見。你能直接把它放在這裏而不是鏈接嗎? –

+0

查看[gallery]中的示例(http://matplotlib.org/examples/pylab_examples/log_demo.html) – cphlewis

+0

hmmm ........... yes鏈接無法點擊!我不得不復制和粘貼它 - 對不起 – derrick

回答

0

您可能需要打開輔助網格。但也知道,從10到60的範圍內是一個對數圖相當小(這也是爲什麼各大電網不出現)

import pylab as pl 
fig = pl.figure() 
# rcParams['figure.figsize'] = 14, 10 # set graph size 
ax1 = fig.add_subplot(1, 1, 1) 
#ax1.plot(line,'r-', ind,'g-') 
ax1.grid(True) 
# pl.xticks(do,rotation=45) 
ax1.set_xlim([10, 20]) 
ax1.set_yscale('log') 
ax1.set_ylim([10000, 60000]) 
ax1.grid(which='minor') 
pl.show() 
+0

根據您的意見,這可能是您正在尋找的內容:http://stackoverflow.com/a/17209836/4735642 – Beachcomber

0

感謝大家的關心。在閱讀您的建議和Beachcombers鏈接和一些實驗後,我想出了以下解決方案。

import pylab as pl 
fig = pl.figure() 
rcParams['figure.figsize'] = 14, 10 # set graph size 
ax1 = fig.add_subplot(1, 1, 1) 
ax1.plot(do,line,'r-', do, ind,'g-') 
ax1.grid(True) 
pl.xticks(do,rotation=45) 
ax1.set_xlim([date1, date2]) 
ax1.set_yscale('log') 
ax1.grid(which='minor') 
from matplotlib.ticker import FormatStrFormatter 
ax1.yaxis.set_minor_formatter(FormatStrFormatter("%.0f")) 
pl.show()