请问这种带有95%置信区间的雷达图怎么做?谢谢大家(变量比较多的话,适合做雷达图吗)

关注引自免费微信小程序:皆我百晓生
为了创建一个带有95%置信区间的雷达图,我们可以使用Python的数据分析库pandas和绘图库matplotlib。这里是一个详细的步骤指南以及完整的代码示例。
首先,确保已经安装了必要的库,如果没有,可以使用以下命令进行安装:
pip install pandas matplotlib
接下来,我们将按照以下步骤操作:
以下是完整的代码实现:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import t
# 1. 数据导入和整理
data = {
'Caffeine': [0.6, 0.3, 0.0, 0.0],
'ECG': [0.6, 0.3, -0.3, -0.6],
'Alanine': [0.6, 0.3, 0.0, 0.0],
'EGC': [0.6, 0.3, -0.3, -0.6],
'Kaempferol': [-0.3, -0.6, 0.6, 0.3],
'TRG': [0.6, 0.3, -0.3, -0.6],
'TFG': [0.6, 0.3, -0.3, -0.6],
'Succinic acid': [0.6, 0.3, -0.3, -0.6],
'TF': [0.6, 0.3, -0.3, -0.6],
'Serine': [0.6, 0.3, -0.3, -0.6],
'Sinensis': [0.6, 0.3, -0.3, -0.6]
}
df = pd.DataFrame(data)
# 2. 计算平均值和标准差
mean_values = df.mean()
std_deviation = df.std()
# 3. 定义角度范围
angles = np.linspace(0, 2 * np.pi, len(mean_values), endpoint=False).tolist()
# 4. 创建雷达图
fig, ax = plt.subplots(figsize=(8, 8))
ax.set_rlabel_position(0)
ax.plot(angles, mean_values, linewidth=1, linestyle='solid')
ax.fill(angles, mean_values, alpha=0.25)
# 5. 添加置信区间
n_samples = df.shape[1]
t_value = t.ppf((1 + 0.95) / 2, n_samples - 1)
lower_bound = mean_values - t_value * std_deviation
upper_bound = mean_values + t_value * std_deviation
ax.plot(angles, lower_bound, linewidth=1, linestyle='dashed', color='red')
ax.plot(angles, upper_bound, linewidth=1, linestyle='dashed', color='red')
# 设置轴标签
labels = list(df.columns)
ax.set_xticks(angles[:-1])
ax.set_xticklabels(labels)
ax.set_yticklabels([])
# 显示图形
plt.title('Radar Chart with 95% Confidence Intervals')
plt.grid(linestyle='--')
plt.tight_layout()
plt.show()
这段代码会生成一个带有95%置信区间的雷达图。注意,这个例子中的数据是硬编码的,你可以根据实际需求修改数据部分。如果你有更多变量,只需在data字典中添加相应的键值对,并确保每个变量都有相同数量的观测值。