【发布时间】:2021-09-03 05:34:49
【问题描述】:
我正在尝试在符合该分布的一些随机生成的点旁边绘制一个正态分布。我希望将这些点简单地绘制在 x 轴上,以显示存在观察密度的位置,如下所示:
我如何实现这一目标?我不断收到以下代码的一些类型错误:
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
mean = 64.43
standard_deviation = 2.99
random_weights = [norm(mean, standard_deviation) for _ in range(0,30)]
x_axis = np.arange(50.0, 80.0, 0.01)
plt.plot(x_axis, norm.pdf(x_axis, mean, standard_deviation))
plt.scatter(random_weights, [0 for _ in range(0,30)])
plt.show()
错误:
Traceback (most recent call last):
File "C:\git\python_playground\main.py", line 13, in <module>
plt.scatter(random_weights, [0 for _ in range(0,30)])
File "C:\Users\thoma\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\pyplot.py", line 3068, in scatter
__ret = gca().scatter(
File "C:\Users\thoma\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\__init__.py", line 1361, in inner
return func(ax, *map(sanitize_sequence, args), **kwargs)
File "C:\Users\thoma\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\axes\_axes.py", line 4587, in scatter
collection = mcoll.PathCollection(
File "C:\Users\thoma\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\collections.py", line 1034, in __init__
super().__init__(**kwargs)
File "C:\Users\thoma\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\_api\deprecation.py", line 431, in wrapper
return func(*inner_args, **inner_kwargs)
File "C:\Users\thoma\AppData\Local\Programs\Python\Python39\lib\site-packages\matplotlib\collections.py", line 206, in __init__
offsets = np.asanyarray(offsets, float)
File "C:\Users\thoma\AppData\Local\Programs\Python\Python39\lib\site-packages\numpy\core\_asarray.py", line 171, in asanyarray
return array(a, dtype, copy=False, order=order, subok=True)
TypeError: float() argument must be a string or a number, not 'rv_frozen'
更新:
这是基于下面标记答案的完整代码解决方案。
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
mean = 64.43
standard_deviation = 2.99
random_weights = np.random.normal(mean, standard_deviation, 30)
# Plot between -10 and 10 with .01 steps.
x_axis = np.arange(50.0, 80.0, 0.01)
plt.plot(x_axis, norm.pdf(x_axis, mean, standard_deviation))
plt.scatter(random_weights, [0 for _ in range(0,30)])
plt.show()
【问题讨论】:
-
“我不断收到一些类型错误...” 每当您对错误有疑问时,请在问题中包含完整的回溯(即完整的错误消息)。里面有有用的信息!
-
@WarrenWeckesser 完成。更新的问题。
标签: python matplotlib scipy