[英]How to set the ticks of log scale for x&y axis?
我想在沒有科學記數法的情況下繪制對數比例圖。
import matplotlib as mpl
import matplotlib.pyplot as plt
plt.plot(np.arange(0,10,0.1))
plt.xscale('log')
plt.yscale('log')
plt.xlim(0.1,100)
plt.ylim(1,10)
plt.gca().xaxis.set_major_formatter(mpl.ticker.ScalarFormatter())
plt.gca().yaxis.set_major_formatter(mpl.ticker.ScalarFormatter())
plt.show()
題:
1.擺脫科學記數法。
刻度是主要和次要刻度,因此您還需要設置次要格式化程序:
plt.gca().yaxis.set_major_formatter(mpl.ticker.ScalarFormatter())
plt.gca().yaxis.set_minor_formatter(mpl.ticker.ScalarFormatter())
2.在特定的自定義位置顯示刻度
擺脫次要的ticklabel允許yticks
按預期工作。
plt.yticks([1,10])
plt.gca().yaxis.set_minor_formatter(mpl.ticker.NullFormatter())
3.擺脫小數點
我認為刪除像0.1
這樣的標簽的小數點是沒有意義的。 因此,人們可能會選擇一個StrMethodFormatter
與G ENERAL目的數字格式g
。
plt.gca().yaxis.set_major_formatter(mpl.ticker.StrMethodFormatter("{x:g}"))
使用plt.ticklabel_format(style='plain')
來擺脫科學記數法。
看起來像plt.yticks([1,10])
完成了它的工作。 yticks()
僅添加您提供的特定數字,而不是范圍。 因此它添加的刻度位於y = 1和y = 10,它們恰好位於圖形的底部和頂部邊緣。 如果你想在它們之間有更多的刻度,你可以嘗試plt.yticks(np.arange(1,10, step=d))
其中'd'是你想要在每一步之間的距離。
嘗試plt.gca().xaxis.set_major_formatter(mpl.ticker.EngFormatter(places=0))
去除小數點。
所有這些都可以在matplotlib文檔中找到,但不可否認它需要一些挖掘。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.