我有一个与此密切相关的问题:
上述线程的解决方案是适当缩放轴的尺寸。 但是,该解决方案不适用于我的代码:
import numpy as np
import matplotlib.pyplot as plt
from numpy import random
import seaborn as sns
np.random.seed(2023)
a = np.random.normal(0, 1, 100000)
sns.histplot(a, bins=np.arange(-5, 5, 0.01), stat='density', color = 'red')
plt.title("Standard Normal Distribution")
plt.xlabel('x')
plt.ylabel('F(x)', rotation=0)
plt.show()
上述代码的绘图如下所示:
上图是x轴上从-5到+5的标准正态分布,步长为0.01,就像代码中
np.arange()
所定义的那样。
现在我想修改我的代码,以便得到完全相同的图,所有内容都在同一个位置,就像上面一样,但 x 轴从 -500 到 500 而不是 -5 到 5,步长宽度1 而不是 0.01。
上述解决方案(归一化直方图 y 轴大于 1)建议修改值
a
,这样,如果 x 轴的尺寸乘以 100,我需要除以 y -axis 100 倍。但是,像这样修改我的代码
import numpy as np
import matplotlib.pyplot as plt
from numpy import random
import seaborn as sns
np.random.seed(2023)
a = np.random.normal(0, 1, 100000)
b = a/ 100
sns.histplot(b, bins=np.arange(-500, 500, 1), stat='density', color = 'red')
plt.title("Standard Normal Distribution")
plt.xlabel('x')
plt.ylabel('F(x)', rotation=0)
plt.show()
结果如下:
首先很有趣,因为它提出了另一个问题:当这样的函数只有一个可能的概率区域时,是否可以将其视为正态分布函数?那么它就像一个总面积为 1 的正方形?
回到最初的问题:如何修改我的代码,以便绘图显示 -500 到 500 之间的 x 值,x 轴上的步长为 1,并且 y 值位于中心(x=0)大约是0.004?
我想你想使用
b = a * 100
这样想: 您使用正态分布生成一个随机列表,其中包含 100,000 个元素,标准差为 1。 如果将其除以 100,标准差约为 0.01。 但步长为 1 时,任何数字落在这一柱线之外的几率实际上都是 0。 因此,您有两个选择: