2017-08-14 166 views
0

我正在嘗試更改matplotlib中日誌圖的刻度標籤,通過手動設置標籤可以正常工作。但是,通常會出現下面顯示的問題,手動移動標籤似乎會保留一些舊標籤。任何想法如何解決這個問題?如何更改matplotlib中的日誌刻度刻度標籤

import matplotlib.pyplot as plt 
%matplotlib inline 

fig, ax = plt.subplots() 
x = [1, 10] 
y = [0, 1] 
ax.plot(x, y) 
ax.set_xscale('log') 
ax.set_xlim(0, 10) 

ax.set_xticks([2.5, 7.5]) 

此外,我最近升級到matplotlib 2.0.2,我不記得以前見過這種行爲。

enter image description here

回答

1

顯示的數值是次要蜱,禁用它們,你可以聲明:

ax.minorticks_off() 

這將導致Tick標誌7.5 dissapearing爲好。

你可能想什麼,是以下解決方案:

from matplotlib.ticker import StrMethodFormatter, NullFormatter 
ax.xaxis.set_major_formatter(StrMethodFormatter('{x:.1f}')) 
ax.xaxis.set_minor_formatter(NullFormatter()) 
+0

謝謝,這作品!一個簡短的後續問題 - 你會如何顯示刻度標籤爲10^{ - 1},10^{ - 2},如果可能的話還有2 \ times 10^{ - 1}。 [想象它是LaTeX,我不知道如何將它顯示在計算器上。] – physicsGuy

+0

'ax.xaxis.set_major_formatter(StrMethodFormatter('{x:.0E}'))'在ofc設置適當的xticks之後;在答案方法中,您將格式強制爲1位小數浮點;這會迫使它爲0十進制的科學記數法。還有其他的選項,但我相信你可以找到關於字符串格式的主題,它可以在比我更短的時間內給你更多的信息。 ;) – Uvar

+0

我在尋找稍微不同的東西。基本上我想要一個格式化程序,它顯示帶有實際指數的刻度標籤,如我的問題所示。我發現'matplotlib.ticker.LogFormatterMathtext'就是這麼做的。不過,謝謝您將我指向股票代碼包,這非常有幫助。 – physicsGuy