作为流行的商业数学软件,MATLAB不仅可以作为离线数值分析的工具,更可以实现网络数据的爬取和地理数据的可视化。本期我们将以新冠疫情数据的可视化为例,带领大家在 MATLAB 中下载线上数据并完成疫情地图的绘制。
通过本案例,您将学会:
☑ 如何更改 MATLAB App Designer的程序图标和Figure图框的图标;
☑ 如何在 App Designer 中创建有别于Waitbar的进度条(uiprogressdlg);
☑ 如何使用 App Designer 下拉框;
☑ 如何使用 MATLAB 抓取网络数据;
☑ 如何使用 MATLAB 绘制数据地图;
☑ 如何创建固定大小、固定位置、无标题栏的 Figure 对话框;
☑ 如何在MATLAB中将13位时间戳转化为中国标准时间;
☑ 如何批量执行表达式 (eval 函数);
☑ 如何将 App Designer 程序发布为独立桌面 App;
☑ 如何使用包命名空间;
实现效果:
用到的函数:
函数名 | 函数类型 | 重要性 | 功能 |
getCoronavirusData | 自定义函数 | 获取新冠疫情数据 | |
weboptions | 系统函数 | 指定Web服务请求参数 | |
webread | 系统函数 | ★★★★★ | 从Web读取内容 |
eval | 系统函数 | 执行Matlab表达式 | |
sortrows | 系统函数 | 对矩阵行或表进行排序 | |
writetable | 系统函数 | 将表写入文件 | |
readtable | 系统函数 | 基于文件创建表 | |
isempty | 系统函数 | 确定数组是否为空 | |
cell2mat | 系统函数 | 将元胞数组转化为普通数组 | |
table | 系统函数 | 创建表数组 | |
getStandardTime | 自定义函数 | 转换 Unix 时间为中国标准时间 | |
fix | 系统函数 | 朝零四舍五入 | |
datestr | 系统函数 | 将日期和时间转化成字符串格式 | |
datenum | 系统函数 | 将日期和时间转化为日期序列值 | |
plotCoronavirusData | 自定义函数 | 绘制新冠疫情分布数据 | |
geobubble | 系统函数 | ★★★★★ | 以可视化方式呈现地理数据 |
uiprogressdlg | 系统函数 | ★★★ | 创建进度对话框 |
figure | 系统函数 | ★★★ | 创建图窗窗口 |
setAppDesignerIcon | 自定义函数 | 设置App Designer 窗口图标 | |
setFigureIcon | 自定义函数 | 设置 Figure 窗口图标 |
核心代码:
data = webread(url, webread_option); % 调用 webread 下载并解析疫情数据
map = geobubble(canvas, data, 'latitude', 'longitude'); % 绘制疫情地图
实现过程:
1. 打开App Designer,拖拽绘制下图所示的控件:
控件名 | 控件类型 | 备注 |
DataTable | 表 | 用于显示疫情数据 |
Panel | 面板 | 用于绘制疫情地图 |
DataSelect | 下拉框 | 选择疫情数据 |
ColorSelect | 下拉框 | 选择绘图颜色 |
PlotInPanel | 按钮 | 在面板中绘制疫情地图 |
PlotInPopupWindow | 按钮 | 在弹窗中绘制疫情地图 |
2. 设置公有属性
属性名 | 属性类型 | 备注 |
CoronavirusData | public | 用于保存疫情数据表 |
PlotPara | public | 用于保存绘图参数 |
3. 添加Startup 回调
4. 创建私有函数 getPlotPara, 用于设置绘图参数
5. 创建下拉框 app.DataSelect和app.ColorSelect的回调函数,每次下拉框值改变时,更新绘图参数。
6. 创建按钮 app.PlotInPanel 回调函数
7. 创建按钮 app.PlotInPopupWindows回调函数
8. 编写 funs.getCoronavirusData函数,获取疫情数据
9. 编写plotCoronavirusData函数
10. 保存并运行。
11. 选择设计器->共享->独立桌面
12. 填写程序信息,选择程序图标和启动图片;
13. 选择程序运行所需的data和figure文件夹;
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删