Python Matplotlib log scale with limit关闭“底部/向上”打印脊线
我试图生成一个log(base 2)图,但我一直得到一个没有上/下边框的图Python Matplotlib log scale with limit关闭“底部/向上”打印脊线,python,matplotlib,Python,Matplotlib,我试图生成一个log(base 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
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。然而,在这种情况下,使用最小值be2^-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()
或使用“symlog”代替对数刻度:
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()
我以前尝试过symlog,但在保存绘图时失败。@fabiim-它是如何失败的?你能提供更多的细节吗?