我想用一個分數對數來繪製一些數據,這樣y軸的刻度爲10 ^( - 0.1),10 ^( - 0.2),10 ^( - 0.3), 問題是,當我繪製我的數據時,在10^0和10^-1處只有刻度線,這使得線的斜率太小而看不到。python matplotlib:fractional logscale
這樣可以設置分數對數比例嗎?
感謝
我想用一個分數對數來繪製一些數據,這樣y軸的刻度爲10 ^( - 0.1),10 ^( - 0.2),10 ^( - 0.3), 問題是,當我繪製我的數據時,在10^0和10^-1處只有刻度線,這使得線的斜率太小而看不到。python matplotlib:fractional logscale
這樣可以設置分數對數比例嗎?
感謝
這聽起來像你想剔標籤,沒有刻度馬克尤其如此。在大多數數字中,小刻度標記已經存在於你想要的地方。
下面可能會工作,但我會認爲有一個更簡單的方法。請注意,我只將標籤應用到次要刻度線上:(兩個)主要刻度線已經有一個標籤。不幸的是,兩種刻度標記的字體是不一樣的;我認爲這是LaTeX公式使用的結果。
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
X = np.logspace(0, 3)
Y = X**-0.2
plt.plot(X,Y)
plt.yscale('log')
yticks = np.linspace(-0.1, -0.9, 9)
ax.set_yticks(10**yticks, minor=True)
ax.set_ylim(0.1, 1)
ax.set_yticklabels(['$10^{{{:.1f}}}$'.format(ytick) for ytick in yticks], minor=True)
plt.show()
導致:
對於不同的標籤字體的問題,您可以手動更改主要刻度標籤:
ax.set_yticks([1, 0.1])
ax.set_yticklabels(['$10^0$', '$10^{-1}$'])
(也可能是相同的對於x軸)。
可能會解決您的問題的相關問題:http://stackoverflow.com/questions/6682784/how-to-reduce-number-of-ticks-with-matplotlib和http://stackoverflow.com/questions/12608788 /改變-t-tick-frequency-on-x-or -y-axis-in-matplotlib – Evert
謝謝,我看了一下,但還是無法想象要做到這一點。我試過這個:'ax.YAxis.set_ticks([10 ** 0,10 **( - 0.1),10 **( - 0.2),10 **( - 0.3)])'但是沒有用。我是matplotlib的新手 – Eddy
您是否在鏈接頁面嘗試了其他任何建議?另外,它應該是'ax.yaxis'; 'ax.YAxis'甚至不存在(儘管可能它在舊的matplotlib版本中)。 – Evert