在 jupyter 中使用 matplotlib 绘制非常小的值

Plot very small values with matplotlib in jupyter

我正在尝试在 jupyter 笔记本(在 macbook pro 上)中使用 matplotlib 绘制一些非常小的值。但是,无论我是否设置 y 轴限制,我得到的只是一条平线。我所追求的是类似于下面关于 y 轴符号的示例 (png)。我还在 jupyter 之外尝试了相同的示例,但仍然得到相同的结果。这是代码 suggested by Andrew Walker on my previous question:

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(13,6))
ax = fig.add_subplot(111)
plt.hold(True)


xs = np.linspace(0, 1, 101)
ys = 1e-300 * np.exp(-(xs-0.5)**2/0.01)

ax.plot(xs, ys, marker='.')

这是我得到的:

这就是我想要的:

最简单的方法是绘制乘以 10^300 的值,然后更改 y 轴标签:

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(13,6))
ax = fig.add_subplot(111)
plt.hold(True)

xs = np.linspace(0, 1, 101)
ys = np.exp(-(xs-0.5)**2/0.01)

ax.plot(xs, ys, marker='.')

ax.set_ylabel(r'Value [x 10^{-300}]')

您可以在轴对象上使用 set_ylim 方法来执行您需要的操作,只需将您的代码更改为此,它就会执行您需要的操作:

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(13,6))
ax = fig.add_subplot(111)
plt.hold(True)


xs = np.linspace(0, 1, 101)
ys = 1e-300 * np.exp(-(xs-0.5)**2/0.01)

ax.set_ylim([0,10^-299])

ax.plot(xs, ys, marker='.')

您可能想查看 This link 以了解有关此主题的更多信息。