簡體   English   中英

如何設置x和y軸的對數刻度?

[英]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. Y軸仍然顯示科學記數法的格式。 怎么改呢?

  2. 如何為y軸制作特定的刻度? 我試過plt.yticks([1,10]) ,但它不起作用。

  3. 如何擺脫x軸和y軸的刻度小數點?

    在此輸入圖像描述

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這樣的標簽的小數點是沒有意義的。 因此,人們可能會選擇一個StrMethodFormatterG ENERAL目的數字格式g

plt.gca().yaxis.set_major_formatter(mpl.ticker.StrMethodFormatter("{x:g}"))
  1. 使用plt.ticklabel_format(style='plain')來擺脫科學記數法。

  2. 看起來像plt.yticks([1,10])完成了它的工作。 yticks()僅添加您提供的特定數字,而不是范圍。 因此它添加的刻度位於y = 1和y = 10,它們恰好位於圖形的底部和頂部邊緣。 如果你想在它們之間有更多的刻度,你可以嘗試plt.yticks(np.arange(1,10, step=d))其中'd'是你想要在每一步之間的距離。

  3. 嘗試plt.gca().xaxis.set_major_formatter(mpl.ticker.EngFormatter(places=0))去除小數點。

所有這些都可以在matplotlib文檔中找到,但不可否認它需要一些挖掘。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM