900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > matlab笔记——绘图篇——折线图+散点图+饼图+直方图+柱状图+箱线图+三维图+地图

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

时间:2018-11-17 16:31:24

相关推荐

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

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

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

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

绘图篇

数据导入

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

数据仅matlab教学使用哈,可以到资源里下:/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___Jan.nc','pm2_5'); %读入PM2.5数据lat=ncread('../data/beijing_pm2_5___Jan.nc','lat'); %读入纬度数据lon=ncread('../data/beijing_pm2_5___Jan.nc','lon'); %读入经度数据siteid=ncread('../data/beijing_pm2_5___Jan.nc','siteid'); %读入站点数据ind=find(pm2_5==-999);pm2_5(ind)=nan; %将缺省值-999替换为NaN

数据可视化

折线图(plot)

task1: 画出第1~4个站点1月PM2.5的逐小时时间序列;

四条线分别为红色,蓝色,粉色,绿色;

线型为实线,线宽为2;

给出图例,x,y轴标签,标题;

pm25_m1=reshape(pm2_5(:,:,1,:),744,12);color=['r','b','m','g'];figurefor i=1:4plot(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(' Jan PM_{2.5} concentrations') %给出标题

散点图(scatter)

task2: 比较第1~4个站点1月PM2.5浓度;

散点实心,大小25;

画出1:1线,线型实线,线宽2,红色;

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

饼图(pie)

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

优良差定义:(这个定义仅是这里示例用的哈)

优:浓度低于等于35;

良:浓度大于35且小于等于75;

差:浓度大于75;

画出爆炸效果饼图;

for i=1:4figureid1=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个站点1月PM2.5浓度优良差天数占比;

bar(num) %画出柱状图

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

直方图 (histogram)

task5: 给出第1个站点1月PM2.5浓度频数分布和频率分布;

x轴范围限制在[0,300];

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

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

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

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

箱线图(boxplot)

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

boxplot(pm25_m1)

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

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

四分位距IQR=Q3-Q1;

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

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

关于箱线图怎么看可以参考这篇博客,这里面有张图非常清楚:/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);figuresurf(cnlon,cnlat,height) %画出高度分布三维图%set(gca,'ZDir','reverse'); %调换z轴正负方向

地图

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

figurepcolor(cnlon,cnlat,height);shading flat %画出高度分布地图colorbarcaxis([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 onset(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官方文档或者百度探索吧~

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

科研干饭人加油!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。