正态分布柱状图50个数值呈正态分布,通过plt.bar()进行绘制
时间: 2023-08-03 20:11:24 浏览: 198
要绘制正态分布柱状图,可以使用numpy库生成正态分布随机数,然后使用matplotlib库中的plt.bar()函数绘制柱状图。
下面是一个示例代码,生成50个符合正态分布的随机数,并将它们分成10个区间,然后绘制柱状图:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成50个符合正态分布的随机数(均值为0,标准差为1)
data = np.random.normal(0, 1, 50)
# 将数据分成10个区间,并统计每个区间的数量
bins = np.linspace(-3, 3, 11)
counts, _ = np.histogram(data, bins=bins)
# 绘制柱状图
plt.bar(bins[:-1], counts, width=0.6, align='edge')
# 设置x轴标签和标题
plt.xlabel('Value')
plt.title('Normal Distribution Histogram')
# 显示图形
plt.show()
```
运行上述代码,即可得到一张正态分布柱状图。
相关问题
50个数值成正态分布范围为0-100 通过plt.bar()进行柱状绘制
可以使用Python中的random和numpy库来生成符合正态分布的50个随机数,并使用matplotlib库的plt.bar()函数进行柱状图绘制。
示例代码如下:
```python
import random
import numpy as np
import matplotlib.pyplot as plt
# 生成50个随机数,符合正态分布,范围为0-100
mu, sigma = 50, 10 # 均值和标准差
data = np.random.normal(mu, sigma, 50)
data = [x if x >= 0 else 0 for x in data] # 将小于0的数值设置为0
data = [x if x <= 100 else 100 for x in data] # 将大于100的数值设置为100
# 绘制柱状图
plt.bar(range(len(data)), data)
# 设置标题、坐标轴标签
plt.title('Normal Distribution')
plt.xlabel('Index')
plt.ylabel('Value')
plt.show()
```
运行以上代码,可以得到一个50个数值成正态分布范围为0-100的柱状图。
import numpy as np import matplotlib.pyplot as plt import pandas as pd w = pd.read_csv('BostonHousing2.csv') w_new=w.drop(columns=["chas"],axis=1) wn0 = w_new.columns wn = wn0[5:] f = plt.figure(figsize=(16,8)) k=0 for i in range(len(wn)): for j in range(len(wn)): k=k+1 if i!=j: f.add_subplot(len(wn),len(wn),k) else: f.add_subplot(len(wn),len(wn),k) plt.scatter([0,1],[0,1]) plt.text(.5,.5,wn[i],\ ha='center',va='center',size=10) y=np.array(w[wn[0]])[:,np.newaxis] X=np.array(w[wn[1:]]) from sklearn import linear_model regr=linear_model.LinearRegression(fit_intercept=False) regr.fit(X,y) print(regr.coef_) res=y-regr.predict(X) import scipy.stats as stats import pylab res.shape=res.shape[0] f=plt.figure(figsize=(12,5)) f.add_subplot(121) plt.scatter(regr.predict(X),res) plt.plot(regr.predict(X),np.ones(len(y))) plt.xlabel('Fitted values') plt.ylabel('Residuals') f.add_subplot(122) stats.probplot(res,dist="norm",plot=pylab) plt.show() from sklearn.tree import DecisionTreeRegressor from sklearn import tree import graphviz regr2 =DecisionTreeRegressor(max_depth=4,random_state=100) regr2 = regr2.fit(X,y) dot_data=tree.export_graphviz(regr2,feature_names=wn[1:],out_file=None) graph=graphviz.Source(dot_data) f=plt.figure(figsize=(12,5)) f.add_subplot(111) height=regr2.feature_importances_ bars = wn[1:] y_pos=np.arange(len(bars)) plt.bar(y_pos,height) plt.xticks(y_pos,bars) plt.yticks() plt.show() 分析上述代码的运行结果
这段代码的运行结果将显示出多个图表和一些数字输出。
首先,代码中的循环将生成一个图表,该图表的每个子图都是特征与特征之间的散点图。这些散点图中,特征与自身的散点图上会显示特征的名称。
接下来,代码计算了线性回归模型的系数(coef_),并将预测值与实际值之间的残差保存在变量res中。然后,它绘制了两个子图:左边的子图显示了预测值与残差之间的散点图,并画出了一条水平线表示残差为1的边界;右边的子图是正态概率图,用于检验残差是否符合正态分布。
接下来,代码使用决策树回归模型进行拟合,并使用graphviz库将决策树可视化为一个图形。这部分代码将生成一个决策树模型的可视化结果。
最后,代码绘制了一个柱状图,显示了特征的重要性。柱状图的x轴是特征的名称,y轴是特征的重要性值。
请注意,以上结果是根据'BostonHousing2.csv'文件和特定参数设置得出的。如果你使用不同的数据集或参数,可能会得到不同的结果。
阅读全文