Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib log scale with limit关闭“底部/向上”打印脊线_Python_Matplotlib - Fatal编程技术网

Python Matplotlib log scale with limit关闭“底部/向上”打印脊线

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

我试图生成一个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.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。然而,在这种情况下,使用最小值be
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()

或使用“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-它是如何失败的?你能提供更多的细节吗?