C++实现多对象9参数雷达图绘制:输入满值后自动折合百分制
```cpp #include <bits/stdc++.h> #include <iostream> #include <vector> #include <string> #include <cmath> #include <matplotlibcpp.h> namespace plt = matplotlibcpp; // 函数用于获取一个人的参数信息 std::vector<double> getPersonParams(int paramCount, std::vector<double> maxScores) { std::vector<double> params(paramCount); for (int i = 0; i < paramCount; ++i) { std::cout << "请输入第 " << i + 1 << " 个参数的值: "; std::cin >> params[i]; // 折合成100分 params[i] = (params[i] / maxScores[i]) * 100; } return params; } // 函数用于生成雷达图 void generateRadarChart(const std::vector<std::vector<double>>& allParams) { int paramCount = allParams[0].size(); std::vector<double> angles; for (int i = 0; i < paramCount; ++i) { angles.push_back(2 * M_PI * i / paramCount); } angles.push_back(angles[0]); plt::figure(); for (const auto& params : allParams) { std::vector<double> tempParams = params; tempParams.push_back(params[0]); plt::polar(angles, tempParams); } plt::show(); } int main() { const int paramCount = 9; std::vector<double> maxScores(paramCount); for (int i = 0; i < paramCount; ++i) { std::cout << "请输入第 " << i + 1 << " 个参数的满分数值: "; std::cin >> maxScores[i]; } std::vector<std::vector<double>> allParams; int personCount = 1; char hasMore; do { std::cout << "现在输入第 " << personCount << " 个人的参数信息。" << std::endl; std::vector<double> params = getPersonParams(paramCount, maxScores); allParams.push_back(params); std::cout << "是否有第 " << personCount + 1 << " 个人? (y/n): "; std::cin >> hasMore; personCount++; } while (hasMore == 'y' || hasMore == 'Y'); generateRadarChart(allParams); return 0; } ``` 代码说明: 1. 万能头文件:使用了`#include <bits/stdc++.h>`,包含了大部分常用的标准库头文件。 2. 获取参数信息:`getPersonParams`函数用于获取一个人的9个参数信息,并将其折合成100分。 3. 生成雷达图:`generateRadarChart`函数使用`matplotlib-cpp`库生成雷达图。 4. 主函数:首先获取9个参数的满分数值,然后循环询问是否有更多的人,并获取每个人的参数信息,最后调用`generateRadarChart`函数生成雷达图。 注意事项: - 此代码使用了`matplotlib-cpp`库,需要提前安装该库并配置好编译环境。 - 输入的参数值会自动折合成100分,方便在雷达图中进行比较。 ######[AI问答 | 801点数解答 | 2026-01-11 21:09:16]
- 递归实现:将对象所有属性值转换为字符串!含代码示例(字节豆包 | 143点数解答 | 2024-11-08 10:25:12)376
- 递归实现:将对象所有属性值转换为字符串类型(字节豆包 | 142点数解答 | 2024-11-11 21:06:15)254
- 递归实现:将对象所有属性值转换为字符串,复杂嵌套也不怕!(阿里通义 | 467点数解答 | 2024-11-12 09:07:17)262
- 易语言:实现搜索通配符功能,解决搜索内容超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 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- 易语言代码优化:自动出售物资子程序整合与优化全解析(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
- Java实现:输入学生成绩精准划分等级(附代码)( | 654点数解答 | 2024-03-28 15:21:06)264
- Java实现:输入学生百分制成绩并精准划分等级(讯飞星火 | 229点数解答 | 2024-03-28 15:30:30)266