4

我对 matplotlib 有一个非常奇怪的问题。绘制一些点如下所示:

正则图

当我在 y 轴上切换到对数刻度时,一些点未连接:

对数刻度

这是一个错误吗?我错过了什么吗?代码如下。注释掉对数刻度线以查看第一张图。

import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(111)

x = [1.0, 2.0, 3.01, 4.01, 5.01, 6.01, 7.04, 8.04, 9.04, 10.05,
     11.05, 12.09, 13.17, 14.18, 15.73, 16.74, 17.74, 18.9, 19.91,
     20.94, 22.05, 23.15, 24.33, 25.48, 26.51, 27.58, 28.86, 29.93,
     30.93, 32.23, 33.25, 34.26, 35.27, 36.29, 37.33, 38.35, 39.36,
     40.37, 41.37]
y = [552427, 464338, 446687, 201960, 227238, 265140, 148903, 134851,
     172234, 120263, 115385, 100671, 164542, 171176, 28, 356, 0, 0,
     195, 313, 9, 0, 132, 0, 249, 242, 81, 217, 159, 140, 203, 215,
     171, 141, 154, 114, 99, 97, 97]

ax1.plot(x, y, c='b', marker='o')

ax1.set_yscale('log')
plt.ylim((-50000, 600000))
plt.show()
4

2 回答 2

7

log(0)未定义。我猜 matplotlib 只是忽略NaN了这里出现的 s 。

于 2012-08-15T15:22:05.843 回答
3

你可以尝试使用ax1.set_yscale('symlog')

使用 symlog 比例绘制数据

于 2021-08-18T09:32:49.227 回答