Python程序:多人物9参数雷达图生成,参数折合百分制展示
以下是一个满足你需求的Python程序,它使用`matplotlib`库来生成雷达图。代码会依次询问每个人的9个参数信息及其满分值,直到用户表示不再添加新的人。会将所有参数折合成100分后生成雷达图。 ```python import matplotlib.pyplot as plt import numpy as np # 询问第一个人9个参数信息及满分数值 params = [] max_params = [] print("请输入第一个人的9个参数信息及对应的满分数值:") for i in range(9): param = float(input(f"请输入第{i + 1}个参数的值:")) max_param = float(input(f"请输入第{i + 1}个参数的满分数值:")) params.append(param) max_params.append(max_param) all_params = [params] # 询问是否有更多人 more_people = input("是否有第二个人?(输入 '是' 或 '否'):") while more_people == "是": person_params = [] print("请输入下一个人的9个参数信息:") for i in range(9): param = float(input(f"请输入第{i + 1}个参数的值:")) person_params.append(param) all_params.append(person_params) more_people = input(f"是否有下一个人?(输入 '是' 或 '否'):") # 将所有参数折合成100分 scaled_params = [] for person in all_params: scaled_person = [score / max_score * 100 for score, max_score in zip(person, max_params)] scaled_params.append(scaled_person) # 生成雷达图 labels = [f'参数{i + 1}' for i in range(9)] angles = np.linspace(0, 2 * np.pi, 9, endpoint=False).tolist() angles += angles[:1] # 闭合图形 fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True)) for i, person in enumerate(scaled_params): person += person[:1] # 闭合图形 ax.plot(angles, person, label=f'第{i + 1}个人') ax.fill(angles, person, alpha=0.25) ax.set_theta_offset(np.pi / 2) ax.set_theta_direction(-1) ax.set_thetagrids(np.degrees(angles[:-1]), labels) ax.set_rlabel_position(0) plt.yticks([20, 40, 60, 80, 100], color="grey", size=12) plt.ylim(0, 100) plt.legend(loc='upper right', bbox_to_anchor=(1.3, 1.1)) plt.show() ``` 代码说明: 1. 收集参数信息:程序首先询问第一个人的9个参数信息及其满分数值,并将这些信息存储在`params`和`max_params`列表中。 2. 询问是否有更多人:接着,程序会询问用户是否有第二个人。如果用户回答“是”,则会继续询问下一个人的9个参数信息,并将其添加到`all_params`二维列表中。这个过程会一直重复,直到用户回答“否”。 3. 参数折合:将每个人的参数按照满分值折合成100分,存储在`scaled_params`列表中。 4. 生成雷达图:使用`matplotlib`库生成雷达图,将每个人的参数绘制成不同的曲线,并填充颜色以区分不同的人。 运行这个程序后,你可以按照提示输入每个人的参数信息,最后会显示生成的雷达图。 ######[AI问答 | 873点数解答 | 2026-01-11 21:07:42]
- 代码填空挑战:完成正态分布、随机数生成及数据处理代码(阿里通义 | 506点数解答 | 2025-03-23 14:32:14)318
- 挑战!完成代码填空解锁数据处理奥秘(字节豆包 | 116点数解答 | 2025-03-26 22:22:15)336
- 挑战填空!完成这段 NumPy 代码实现数据生成与保存(DeepSeek | 178点数解答 | 2025-03-26 22:26:30)397
- 易语言:实现搜索通配符功能,解决搜索内容超255问题(字节豆包 | 32点数解答 | 2026-02-09 16:44:31)45
- 代码优化:“A_寻找通配符”子程序的改进之路(字节豆包 | 1248点数解答 | 2026-02-09 16:45:52)48
- 易语言:A_寻找通配符子程序完整实现及详细代码解读(字节豆包 | 1368点数解答 | 2026-02-09 16:49:12)41
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)459
- 易语言代码优化:自动出售物资子程序整合与优化全解析(DeepSeek | 2181点数解答 | 2025-07-23 10:26:29)214
- 大文件多线程上传流程全解析:从步骤说明到代码示例及注意事项(字节豆包 | 1079点数解答 | 2025-09-24 13:45:27)114
- 易语言:实现 Api 读取整数型内存数据的代码剖析(字节豆包 | 34点数解答 | 2026-02-09 11:48:57)24
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)415
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)407