目录
[Q1: 创建结构体数组student](#Q1: 创建结构体数组student)
[Q2: 分析JSON文件中的宝可梦数据](#Q2: 分析JSON文件中的宝可梦数据)
[Q3: 导入文件夹中的xml和图片文件](#Q3: 导入文件夹中的xml和图片文件)
[Q4: 筛选工作区的数据](#Q4: 筛选工作区的数据)
[Q5: 王者荣耀玩家数据分析](#Q5: 王者荣耀玩家数据分析)
[Q6: 公历和农历日期转换](#Q6: 公历和农历日期转换)
[Q7: 839个站点的每日气温数据分析](#Q7: 839个站点的每日气温数据分析)
[第11章 数据可视化](#第11章 数据可视化)
[9.1 数据可视化开篇](#9.1 数据可视化开篇)
[9.1.1 常见的图片类型](#9.1.1 常见的图片类型)
[9.1.2 数据可视化的步骤](#9.1.2 数据可视化的步骤)
[9.1.3 数据的分类:数值型和分类型](#9.1.3 数据的分类:数值型和分类型)
[9.1.4 学术图形的绘制原则](#9.1.4 学术图形的绘制原则)
[9.1.5 网站推荐](#9.1.5 网站推荐)
[9.1.6 资源推荐](#9.1.6 资源推荐)
[9.1.7 数据可视化的工具分类](#9.1.7 数据可视化的工具分类)
[9.1.8 MATLAB的版本建议和绘图函数](#9.1.8 MATLAB的版本建议和绘图函数)
数组练习题
Q1: 创建结构体数组student
Matlab
% 创建一个包含3个学生的结构体数组
students(1).name = 'Alice';
students(1).age = 20;
students(1).score = 90;
students(2).name = 'Bob';
students(2).age = 22;
students(2).score = 85;
students(3).name = 'Charlie';
students(3).age = 21;
students(3).score = 92;
% 显示结构体数组
disp(students);
Q2: 分析JSON文件中的宝可梦数据
Matlab
% 假设有一个名为pokemon.json的文件
filename = 'pokemon.json';
% 读取JSON文件
data = jsondecode(fileread(filename));
% 显示部分数据以验证
disp(data(1)); % 显示第一个宝可梦的数据
% 分析示例:计算所有宝可梦的平均身高
average_height = mean([data.height]);
% 显示结果
disp(['Average Height: ', num2str(average_height)]);
Q3: 导入文件夹中的xml和图片文件
Matlab
% 假设xml和图片文件都在当前文件夹的subfolder子文件夹中
folder = 'subfolder';
xmlFiles = dir(fullfile(folder, '*.xml'));
imgFiles = dir(fullfile(folder, '*.jpg')); % 假设图片为jpg格式
% 读取第一个xml文件
xmlData = xmlread(fullfile(xmlFiles(1).folder, xmlFiles(1).name));
% 读取第一个图片文件
imgData = imread(fullfile(imgFiles(1).folder, imgFiles(1).name));
% 显示图片
imshow(imgData);
Q4: 筛选工作区的数据
Matlab
% 假设有一个名为data的数组,包含多列数据
% 筛选条件:选择score列大于等于90的行
filteredData = data(data.score >= 90, :);
% 显示筛选后的数据
disp(filteredData);
Q5: 王者荣耀玩家数据分析
Matlab
% 假设有一个名为players的数组,包含玩家数据
% 分析示例:计算平均胜率
average_win_rate = mean(players.win_rate);
% 显示结果
disp(['Average Win Rate: ', num2str(average_win_rate), '%']);
% 进一步分析:找出胜率最高的玩家
[max_win_rate, idx] = max(players.win_rate);
best_player = players(idx, :);
% 显示最佳玩家信息
disp('Best Player:');
disp(best_player);
Q6: 公历和农历日期转换
Matlab
% 公历转农历(需要自定义函数或调用第三方库,此处为示意)
solar_date = datetime(2023, 10, 1);
lunar_date = solarToLunar(solar_date); % 假设solarToLunar为转换函数
% 显示农历日期
disp(['Lunar Date: ', lunar_date]);
% 农历转公历(同样需要自定义函数或调用第三方库)
lunar_date = '2023-08-11';
solar_date = lunarToSolar(lunar_date); % 假设lunarToSolar为转换函数
% 显示公历日期
disp(['Solar Date: ', solar_date]);
Q7: 839个站点的每日气温数据分析
Matlab
% 假设有一个名为temperature的数据矩阵,每行代表一个站点,每列代表一天
% 分析示例:计算每个站点的平均气温
average_temperatures = mean(temperature, 2); % 计算每行的平均值
% 显示部分结果
disp('Average Temperatures for Some Stations:');
disp(average_temperatures(1:10)); % 显示前10个站点的平均气温
% 可视化:绘制某个站点的气温变化图
station_id = 1; % 选择第一个站点
plot(temperature(station_id, :));
title(['Temperature Trend for Station ', num2str(station_id)]);
xlabel('Day');
ylabel('Temperature (°C)');
第11章 数据可视化
知识点总结来源:《MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)》。
9.1 数据可视化开篇
9.1.1 常见的图片类型
数据可视化图形
折线图、散点图、柱状图、饼图、直方图、热力图等
以其清晰的视觉效果,直观地展示数据的分布、趋势和相互关联性,极大地增强了定量分析的直观性和理解度。
流程与方法图
流程图、算法图等
以其逻辑性和顺序性,清晰地呈现研究方法、实验步骤或理论逻辑框架,为读者提供了对操作序列和理论构造的深刻理解。
结构展示图
分子结构图、化合物模型、工程机械设计图等
以其精细的描绘,详细地展现了从微观到宏观各层面的结构组成,促进了对复杂系统深层次的理解。
实验与观测影像图
显微镜图像、扫描电子显微镜图像、X光图像等
这些直接记录的实验现象或样本特征,为研究发现的真实性和细节提供了有力的验证。
地理空间图
地图、地理信息系统(GIS)图像等
在地理学、生态学及环境研究中,展示了地理位置、分布模式和地域性特征,为相关领域的研究提供了空间维度的视角和分析工具。
9.1.2 数据可视化的步骤
(1)全面了解数据集
首先,要审视手头上的数据类型和范围。这涉及到对数据集的全面了解,包括数据的来源、结构和可能的局限性。
(2)表达什么数据信息
其次,明确想要通过数据传达的信息。这需要确定数据分析的目标,以及希望观众从中获得的关键结论。
(3)选择可视化工具和技术
接着,选择合适的可视化工具和技术。这一步要求根据数据的特点和信息目标,选择最能清晰表达数据关系和模式的图形类型。
(4)解读图形
最后,对生成的图形进行解读,验证其是否准确传达了预期信息。这一步是对可视化结果的审视,确保图形不仅在视觉上吸引人,而且在内容上具有说服力。
要想得到完美的可视化图形,在上述 4 个步骤中都要反复进行思索。
9.1.3 数据的分类:数值型和分类型
数值型数据
表示的是数量或度量,通常可进行数学运算。
可以是离散的(如人数、产品的数量),
也可以是连续的(如温度、价格)。
分类型数据
又称为定性数据或名义数据,表示的是类别或属性,比如性别、品牌名称等。
可以是有序的,比如级别(低级、中级和高级),
也可以是无序的,比如血型(A、B、O、AB等)。
特殊情况
(1)时间点数据可以视为数值型数据的一种特殊形式,用于描述具体的时刻;
(2)当分类型数据的类别数量庞大时,如学生的姓名或商品评论,它们通常被视为一般的文本数据,用于描述个体的独特性。
(3)在某些情况下,虽然数据以数值形式呈现,但其本质上表示的是类别或属性。
例如,在问卷调查中,经常使用1表示"是",0表示"否",这样的数据虽然以数值形式存在,但应视为分类型数据。
9.1.4 学术图形的绘制原则
规范
需符合投稿期刊的格式和分辨率要求。
图形的大小、字体、坐标、图例、轴名等需规范。
图形要高清、不要将图形截图放在论文中。
简洁
图形应该清晰地表达数据的信息。
同一张图上尽量避免信息过载,图形上表达的信息过多时,反而会让读者难以专注于作者所要展示的核心结论。
专业
选择合适的图形类型以全面反映数据,思考如何更好表达数据。
确保图形类型与数据内容相匹配,提高图形专业性。
不要刻意去套用不熟悉或比较冷门的图形。
美观
图形应美观,能吸引眼球。
精心选择配色方案、构图和比例。
提升自己的审美能力,优化图形的呈现效果。
9.1.5 网站推荐

网站汇总了市面上广泛使用的数据可视化图形,并为每一种图形提供了详细的说明和示例
9.1.6 资源推荐
FT可视化词典是由FT(Financial Times,金融时报)出品的一个可视化效果合辑,其中包含了多种精心挑选的数据可视化图形。

可视化词典旨在协助用户设计出内容丰富、有意义的数据可视化作品。
9.1.7 数据可视化的工具分类
在数据可视化领域,工具的选择多种多样,总体可分为三大类:
(1)无需编程的可视化工具
(Excel、Power BI、Origin、Tableau等)
通过直观的图形用户界面进行操作,无需编写复杂的代码,即可轻松实现数据可视化。
对于非专业编程人员来说,这些工具提供了便捷、高效的解决方案。
(2)需要编程的可视化工具
(MATLAB、Python、R语言、D3.js、Echarts等)
特侧重于提供高度定制化和灵活性的数据可视化方案。
它们需要用户具备一定的编程知识,以便根据实际需求进行个性化设置和定制。
(3)在线数据可视化网站
(raw graphs、plotdb、Flourish等)
这些网站无需用户下载桌面应用,只需在网页上即可轻松实现数据可视化。
它们通常提供了丰富的图形类型和易用的界面设计,让用户可以快速地制作和分享数据可视化作品。
9.1.8 MATLAB的版本建议和绘图函数

最低版本要求:为确保课程演示的顺利进行,请使用不低于2017a的版本。低于此版本可能会遇到较多代码兼容性问题,导致运行错误(尤其是涉及到字符串数组相关的内容)。
代码差异点:高版本的MATLAB在某些情况下提供了更加精简的绘图语法。绘制同一张图形,使用高版本的MATLAB可能仅需一行代码就能搞定,而使用低版本MATLAB需要多行代码。
新的图形类型:近年来,新版本的MATLAB推出了多种高级的可视化图形。例如,在2020b版推出了"气泡图"(bubblechart)和"分簇散点图"(swarmchart)、 2023b版新增了"甜甜圈图"(donutchart)等。
使用表格数据类型绘图:少部分绘图函数支持使用表格数据类型(Table)进行绘图。