plt.errorbar()函数解析(最清晰的解释)

欢迎关注WX公众号:【程序员管小亮】

plt.errorbar()函数用于表现有一定置信区间的带误差数据。

plt.errorbar(x, 
	y, 
	yerr=None, 
	xerr=None, 
	fmt='', 
	ecolor=None, 
	elinewidth=None, 
	capsize=None, 
	capthick=None
)

主要参数:

  • x,y: 数据点的位置坐标
  • xerr,yerr: 数据的误差范围
  • fmt: 数据点的标记样式以及相互之间连接线样式
  • ecolor: 误差棒的线条颜色
  • elinewidth: 误差棒的线条粗细
  • capsize: 误差棒边界横杠的大小
  • capthick: 误差棒边界横杠的厚度
  • ms: 数据点的大小
  • mfc: 数据点的颜色
  • mec: 数据点边缘的颜色
例子1:
import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(1,10,20)
dy=np.random.rand(20)
y=np.sin(x)*3

plt.errorbar(x,y,yerr=dy,fmt='o',ecolor='r',color='b',elinewidth=2,capsize=4)
#fmt :   'o' ',' '.' 'x' '+' 'v' '^' '<' '>' 's' 'd' 'p'
plt.show()

在这里插入图片描述

例子2:
import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0.1,0.5,10) # 生成[0.1,0.5]等间隔的十个数据
y=np.exp(x)

error=0.05+0.15*x # 误差范围函数
error_range=[error*0.3,error] # 下置信度和上置信度

plt.errorbar(x,y,yerr=error_range,fmt='o:',ecolor='hotpink',
			elinewidth=3,ms=5,mfc='wheat',mec='salmon',capsize=3)
plt.show()

在这里插入图片描述

python课程推荐。
在这里插入图片描述

#问题2 # 标准化数据 scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # 使用肘部法则确定佳聚类数量 inertia = [] k_range = range(1, 11) for k in k_range: kmeans = KMeans(n_clusters=k, random_state=42, n_init=10) kmeans.fit(X_scaled) inertia.append(kmeans.inertia_) # 绘制肘部法则图 plt.figure(figsize=(10, 6)) plt.plot(k_range, inertia, marker='o') plt.xlabel('聚类数量') plt.ylabel('误差平方和') plt.title('肘部法则确定佳聚类数量') plt.grid(True) plt.show() # 2. 根据肘部法则选择聚类数量 (这里选择3个聚类) optimal_k = 4 kmeans = KMeans(n_clusters=optimal_k, random_state=42, n_init=10) result_df['BMI分组'] = kmeans.fit_predict(X_scaled) # 3. 可视化聚类结果 plt.figure(figsize=(12, 6)) # 绘制聚类分布 plt.subplot(1, 2, 1) for i in range(optimal_k): cluster_data = result_df[result_df['BMI分组'] == i]['孕妇BMI'] plt.hist(cluster_data, alpha=0.7, label=f'聚类 {i+1}', bins=15) plt.xlabel('孕妇BMI') plt.ylabel('频次') plt.title('K-means聚类结果分布') plt.legend() plt.grid(True, alpha=0.3) # 绘制聚类中心 plt.subplot(1, 2, 2) centers = scaler.inverse_transform(kmeans.cluster_centers_) plt.bar(range(1, optimal_k+1), centers.flatten(), color=['red', 'green', 'blue']) plt.xlabel('聚类') plt.ylabel('BMI中心值') plt.title('各聚类中心BMI值') plt.xticks(range(1, optimal_k+1)) plt.grid(True, alpha=0.3) plt.tight_layout() plt.show() # 4. 计算各聚类的BMI范围并命名分组 cluster_stats = result_df.groupby('BMI分组')['孕妇BMI'].agg(['min', 'max', 'mean', 'count']).round(1) cluster_names = {} for i in range(optimal_k): cluster_names[i] = f'BMI聚类{i+1}({cluster_stats.loc[i, "min"]}-{cluster_stats.loc[i, "max"]})' result_df['BMI分组名称'] = result_df['BMI分组'].map(cluster_names) # 5. 分析各聚类的达标孕周分布 group_stats = result_df.groupby('BMI分组名称')['达标孕周'].agg([ ('样本数', 'count'), ('平均值', 'mean'), ('标准差', 'std'), ('中位数', 'median'), ('25%分位数', lambda x: np.percentile(x, 25)), ('75%分位数', lambda x: np.percentile(x, 75)), ('小值', 'min'), ('大值', 'max') ]).round(2) print("各BMI聚类组的达标孕周统计:") print(group_stats) # 6. 绘制不同BMI聚类的达标孕周箱线图 plt.figure(figsize=(10, 6)) result_df.boxplot(column='达标孕周', by='BMI分组名称', grid=False) plt.title('不同BMI聚类组的达标孕周分布') plt.suptitle('') # 移除默认标题 plt.ylabel('达标孕周') plt.xlabel('BMI聚类组') plt.xticks(rotation=45) plt.tight_layout() plt.show()# 计算各聚类的BMI范围并命名分组 cluster_stats = result_df.groupby('BMI分组')['孕妇BMI'].agg(['min', 'max', 'mean', 'count']).round(1) cluster_names = {} for i in range(4): cluster_names[i] = f'BMI分组{i+1}({cluster_stats.loc[i, "min"]}-{cluster_stats.loc[i, "max"]})' result_df['BMI分组名称'] = result_df['BMI分组'].map(cluster_names) # 为每个BMI分组计算达标孕周的累积分布函数(CDF) bmi_groups = result_df.groupby('BMI分组名称') cdf_functions = {} plt.figure(figsize=(12, 8)) for name, group in bmi_groups: # 计算经验CDF sorted_weeks = np.sort(group['达标孕周']) cdf = np.arange(1, len(sorted_weeks)+1) / len(sorted_weeks) # 绘制CDF plt.plot(sorted_weeks, cdf, label=name, linewidth=2) # 创建插值函数以便后续使用 cdf_functions[name] = interp1d(sorted_weeks, cdf, bounds_error=False, fill_value=(0, 1)) plt.xlabel('孕周') plt.ylabel('累积概率') plt.title('不同BMI分组的达标孕周累积分布函数') plt.legend() plt.grid(True, linestyle='--', alpha=0.7) plt.show()# 定义分段风险函数 R(t) def risk_function(t): if t <= 12: return 0 elif 12 < t <= 27: return (t - 12) / 15 else: return 2 # 计算每个BMI分组的佳NIPT时点 optimal_times = {} 请根据以上条件,求出佳NIPT时点,使得风险小,把结果和累计函数显现在同一张图中
09-06
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是管小亮

一口吃掉你的打赏,嗝~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值