簡體   English   中英

帶有限制的Matplotlib對數刻度將關閉底部/向上圖脊線

[英]Matplotlib log scale with limit turns off the bottom/up plot spine

我正在嘗試生成對數(以2為底)的圖,但是我一直在獲取沒有頂部/底部邊界的圖。

import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter

def toK (array):
    return map (lambda x: x/1000.0, array)


yy = [2603.76, 41077.89,48961.74, 43471.14]
xx = [1,16,32,64]

ax = plt.subplot(221, axisbg = 'white')
ax.set_xlim(0, 128)


ax.set_xscale('log', basex=2)



ax.plot( xx, toK(yy), label="0%", linestyle='--',  marker='o', clip_on = False)

plt.savefig('./tx2.pdf', bbox_inches='tight')

松緊帶

如何正確執行此操作?

這是因為使用對數刻度時,限制為0。 0在對數刻度上為負無窮大)

將軸限制設置為包括零應該會引發一個錯誤,但是此刻,它只是默默地導致某些故障。

如果要在圖上設置0,請使用symlog而不是log。 但是,在這種情況下,將最小值設為2^-1 (即0.5)可能更有意義。

例如,執行以下任一操作:

import matplotlib.pyplot as plt
import numpy as np

yy = np.array([2603.76, 41077.89,48961.74, 43471.14])
xx = [1,16,32,64]

fig, ax = plt.subplots()
ax.set_xlim(0.5, 128)

ax.set_xscale('log', basex=2)

ax.plot(xx, yy / 1000, linestyle='--',  marker='o', clip_on=False)
plt.show()

在此處輸入圖片說明

或使用“符號”代替對數刻度:

import matplotlib.pyplot as plt
import numpy as np

yy = np.array([2603.76, 41077.89,48961.74, 43471.14])
xx = [1,16,32,64]

fig, ax = plt.subplots()
ax.set_xlim(0, 128)

ax.set_xscale('symlog', basex=2)

ax.plot(xx, yy / 1000, linestyle='--',  marker='o', clip_on=False)
plt.show()

在此處輸入圖片說明

暫無
暫無

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

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