[英]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.