今天早上刚讲完课,一个小时的培训准备起来也很不容易呐,但是讲完还是挺开心的啦。

现在来把绘图篇更新一下。

这篇主要就讲matlab数据可视化,介绍一下matlab基本图形绘制。


绘图篇

数据导入

给大家解释一下数据文件,beijing_siteinfo.csv给出了北京12个国控站的站点信息。beijing_pm2_5_2014_2018_Jan.nc给出了2014-2018年5年1月份PM2.5数据。

数据仅matlab教学使用哈,可以到资源里下:https://download.csdn.net/download/qq_27984679/15597542

没办法,博客没办法直接添加附件,太不方便了。

clc;clear;%close all;
bjinfo=importdata('../data/beijing_siteinfo.csv') %读入csv文件中站点信息
textinfo=bjinfo.textdata %读入csv文件中站点文本信息
datainfo=bjinfo.data %读入csv文件中站点数据信息
bjinfo=readmatrix('../data/beijing_siteinfo.csv') %其他方法读入csv文件数据信息
pm2_5=ncread('../data/beijing_pm2_5_2014_2018_Jan.nc','pm2_5'); %读入PM2.5数据
lat=ncread('../data/beijing_pm2_5_2014_2018_Jan.nc','lat'); %读入纬度数据
lon=ncread('../data/beijing_pm2_5_2014_2018_Jan.nc','lon'); %读入经度数据
siteid=ncread('../data/beijing_pm2_5_2014_2018_Jan.nc','siteid'); %读入站点数据
ind=find(pm2_5==-999);pm2_5(ind)=nan; %将缺省值-999替换为NaN

数据可视化

折线图(plot)

task1: 画出第1~4个站点2014年1月PM2.5的逐小时时间序列;
四条线分别为红色,蓝色,粉色,绿色;
线型为实线,线宽为2;
给出图例,x,y轴标签,标题;

pm25_m1=reshape(pm2_5(:,:,1,:),744,12);
color=['r','b','m','g'];
figure
for i=1:4
plot(pm25_m1(:,i),'color',color(i),'linewidth',2);hold on %画出折线图
end
%legend({'site1','site2','site3','site4'})  %给出图例
legend(textinfo(1:4,2))
xlabel('hours')     %给出x轴标签
ylabel('PM_{2.5}')  %给出y轴标签
title('2014 Jan PM_{2.5} concentrations') %给出标题


散点图(scatter)

task2: 比较第1~4个站点2014年1月PM2.5浓度;
散点实心,大小25;
画出1:1线,线型实线,线宽2,红色;

x=1:600;
y=x;
sz = 25;  %设置散点大小
c = linspace(1,10,length(pm25_m1(:,1)));
figure
scatter(pm25_m1(:,1),pm25_m1(:,2),sz,c,'filled');hold on  %画出散点图
plot(x,y,'r-','linewidth',2);hold on


饼图(pie)

task3: 统计第1~4个站点2014年1月PM2.5浓度优良差天数占比;
优良差定义:(这个定义仅是这里示例用的哈)
优:浓度低于等于35;
良:浓度大于35且小于等于75;
差:浓度大于75;
画出爆炸效果饼图;

for i=1:4
figure
id1=find(pm25_m1(:,i)<=35);
id2=find(pm25_m1(:,i)>35&pm25_m1(:,1)<=75);
id3=find(pm25_m1(:,i)>75);
num1=numel(id1);
num2=numel(id2);
num3=numel(id3);
num=[num1,num2,num3];
label={'优','良','差'}
explode=[0,0,0.5];  %设置爆炸效果圆心距离
%pie(num)  %饼图+百分比标签
%pie(num,label)  %饼图+文本标签
pie(num,explode,label)  %爆炸效果饼图
end

合成文本和百分比标签

p=pie(num);
pText = findobj(p,'Type','text');
percentValues = get(pText,'String');
txt = {'优: ';'良: ';'差: '};
combinedtxt = strcat(txt,percentValues);
pText(1).String = combinedtxt(1);
pText(2).String = combinedtxt(2);
pText(3).String = combinedtxt(3);


柱状图 (bar)

task4: 统计第1~4个站点2014年1月PM2.5浓度优良差天数占比;

bar(num)  %画出柱状图

柱状图的作用和饼图类似,但如果分类较多,适合用柱状图,否则饼图每个扇形太小就会看不清楚。


直方图  (histogram)

task5: 给出第1个站点2014年1月PM2.5浓度频数分布和频率分布;
x轴范围限制在[0,300];

figure
histogram(pm25_m1(:,1))
%xlim([0,300])figure
histogram(pm25_m1(:,1),'normalization','pdf') %画出频率分布直方图
%xlim([0,300])

如果把‘normalization’后面的参数pdf改成count,那画出来的也是频数分布直方图。

这里左边是频数分布直方图,右边是频率分布直方图。

直方图和柱状图的区别在于,直方图一般x轴是连续的,适合数值型数据;而柱状图是分隔的,适合分类型数据。


箱线图(boxplot)

task6: 比较12个站点2014年1月PM2.5浓度的各个统计量(最大最小值、中位数等);

boxplot(pm25_m1)

箱线图适合一组数据多种统计量的比较,我这里就是比较了12个站点2014年1月的PM2.5。

箱子的上边缘Q3和下边缘Q1分别是下四分位数和上四分位数;

四分位距IQR=Q3-Q1;

上限=(Q3+1.5IQR,max)取最小,

下限=(Q1-1.5IQR ,min)取最大。

关于箱线图怎么看可以参考这篇博客,这里面有张图非常清楚:https://blog.csdn.net/weixin_39980917/article/details/111579740?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.baidujs&dist_request_id=1328603.1454.16148714256221063&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.baidujs


三维图 (surf)

task7: 画出全球地面高度,z轴表示高度

height=double(ncread('../data/global_surface_height.nc','height')); %从文件读取数据,第一个参数为文件名,第二个参数为变量名
lat=double(ncread('../data/global_surface_height.nc','lat'));
lon=double(ncread('../data/global_surface_height.nc','lon'));
[cnlat,cnlon]=meshgrid(lat,lon);
figure
surf(cnlon,cnlat,height)  %画出高度分布三维图
%set(gca,'ZDir','reverse');  %调换z轴正负方向


地图

task8: 画出全球地面高度,颜色表示高度

figure
pcolor(cnlon,cnlat,height);shading flat %画出高度分布地图
colorbar
caxis([0,6000])
hold onload ../data/mask1x1.mat  %读入海岸线文件
mask_lon=lon;mask_lat=lat;
[mask_lon1,mask_lat1]=meshgrid(mask_lon,mask_lat);
contour(mask_lon1,mask_lat1,mask,'k'); %给地图加上海岸线
hold on
set(gca,'FontSize',18)
xlabel('lon','fontweight','bold','FontSize',22);
ylabel('lat','fontweight','bold','FontSize',22);

那这里pcolor画的地图是非常粗糙的,如果大家想用matlab画好看的地图,建议下载m_map包来进行图形绘制:https://www.eoas.ubc.ca/~rich/map.html


那这些就是一些最最基本的matlab画图,更多的技巧和设置大家自行doc官方文档或者百度探索吧~

讲座完事儿了,也不知道有没有动力再更新进阶篇,哈哈哈,想偷懒啦。就随缘更新吧~

科研干饭人加油!

matlab笔记——绘图篇——折线图+散点图+饼图+直方图+柱状图+箱线图+三维图+地图相关推荐

  1. 用户数据销售额分析动态大屏看板+大屏数据可视化图表组件(折线图+圆柱图+散点图+饼图+漏斗图+雷达图+水位图)+智能web端高保真大数据动态可视化大屏看板+中国动态地图+智慧电商实时动态数据大屏看板

    作品内容:用户数据销售额分析动态大屏看板+大屏数据可视化图表组件(折线图+圆柱图+散点图+饼图+漏斗图+雷达图+水位图)+web端高保真大数据动态可视化大屏看板+中国动态地图+电商实时动态数据大屏看板 ...

  2. 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图

    折线图: package org.achartengine.chartdemo.demo.chart;import java.util.ArrayList; import java.util.List ...

  3. itextpdf 添加折线图、饼图、柱状图

    itextpdf 添加折线图.饼图.柱状图 时隔三年,又要对PDF一顿改版了,此次改版加入了饼图.折线图.柱状图等图形可视化. 文章目录 itextpdf 添加折线图.饼图.柱状图 依赖包 效果图 步 ...

  4. 中累计直方图_试验研究中的利器强大的直方图和箱线图

    上次小编给大家介绍了跟误差线有关的几个概念以及相关的柱状图,散点图,和小提琴图(试验数据统计中常用的 量,图,和线--再也不担心文章的统计用图了!).这些图和线都属于"比较统计学" ...

  5. 【数据处理】python matplotlib 画箱线图;箱线图介绍;如何画箱线图

    一.箱线图介绍 假设一组数据有n个数,将它们从小到大排列,分为四等分.位于第25%(n+1)位置的数字是第一四分位数Q1.位于第50%(n+1)位置的数字是第二四分位数Q2,也是中位数.位于第75%( ...

  6. 数据为北太平洋柔鱼两年(1,2)的生物学采样数据,根据此数据完成 (1) 按年描述柔鱼的体重和胴长数据(如均值,方差,级差,分位数等),并进行绘 制(如直方图、箱线图,密度图等)。

    三.数据为北太平洋柔鱼两年(1,2)的生物学采样数据,根据此数据完成 (1) 按年描述柔鱼的体重和胴长数据(如均值,方差,级差,分位数等),并进行绘 制(如直方图.箱线图,密度图等). library ...

  7. java使用poi在word中生成柱状图、折线图、饼图、柱状图+折线图组合图、动态表格、文本替换、图片替换 springboot项目

    本文参考地址:https://blog.csdn.net/u014427811/article/details/100771314 在参考文章的基础上,增加了模板样例 模板样例地址 百度网盘 链接:h ...

  8. 量化投资常用技能——绘图篇 1:绘制股票收盘价格曲线和ochl烛状图

    量化投资常用技能--绘图篇 1 量化投资 绘图技能 Python绘图库:matplotlib 绘制烛状图库:mpl_finance 之后的博客讲解深度会逐渐提升,将包括一下几个方面: 绘图 指标公式与 ...

  9. java使用poi在word中生成柱状图、折线图、饼图、柱状图+折线图组合图、动态表格、文本替换、图片替换、更新内置Excel数据、更新插入的文本框内容、合并表格单元格;

    本文参考地址:https://blog.csdn.net/wangxiaoyingWXY/article/details/95377533 在参考文章的基础上,增加了扩展.感谢被参考的妹子.另外该博客 ...

最新文章

  1. 在linux和windows下自动备份数据库
  2. Shell之系统函数和自定义函数
  3. Day5:面向对象的定义(中)
  4. JS对JSON的操作总结
  5. TroubleshootingGuide for JavaTM SE 6withHotSpot TM VM (翻译附录未完待续)-2
  6. 自己的数字选择控件NumberPicker
  7. 浅谈同步复位与异步复位
  8. 7-9 N个数求和 (20 分)
  9. 完善的WebGis地图编辑器
  10. (原創) 這學期C++完美的Ending (C/C++) (日記)
  11. 十分钟掌握Nodejs下载和安装
  12. dokuwiki之新增/删除页面(文章)(一)
  13. axios请求跨域前端解决_10、axios请求以及跨域问题,前端解决方法。11、后端-nginx解决方法...
  14. node文件通过不同的后缀名解析不同的文件类型
  15. 点计算机管理 显示文件缺失,电脑开机显示文件丢失怎么回事
  16. 开源CRM+SaaS云服务的生态模式能否撬动中国管理软件市场?
  17. 普通SSD大量拷贝数据速度变慢?
  18. 微博登录界面的PHP代码,redis+php实现微博(一)注册与登录功能详解
  19. python作业答案用什么软件好_可以搜整本答案的软件 作业答案软件有哪些
  20. 沟渠指什么_什么是生态拦截沟渠?作用是什么?

热门文章

  1. 大学英语作文计算机网络,网络对大学生的影响The Influence of the Internet on College Students...
  2. COORD七参数计算步骤
  3. 计算最高逾期、当前逾期、累计逾期
  4. 模拟模拟交易系统(三)——UI设计
  5. Unity 2D碰撞/UI组件碰撞
  6. 新手问题 Table '库名.表名' doesn't exist
  7. error: could not find git for clone of XXX
  8. 项目管理之项目的进度计算问题
  9. 第35节-运算符、函数、表达式 | 剑雨Axure RP9系列【基础】
  10. 使用bootstrap搭建后台界面(一)列表展示