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

时间:2016-10-30 13:03:25

标签: python matplotlib jupyter

我试图用jupyter笔记本中的matplotlib绘制一些非常小的值(在macbook pro上)。但是,无论我设置y轴限制,我得到的只是一条平线。我所追求的是类似于下面关于y轴符号的示例(png)。我也在jupyter之外尝试了相同的例子,我仍然得到相同的结果。以下是suggested by Andrew Walker上的代码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='.')

这是我得到的:

enter image description here

这就是我追求的目标:

enter image description here

2 个答案:

答案 0 :(得分:2)

最简单的方法是将您的值乘以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}]')

答案 1 :(得分:0)

您可以在轴对象上使用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以了解有关此主题的更多信息。