matlab笔记

您所在的位置:网站首页 柱状图的画法教科版 matlab笔记

matlab笔记

2023-07-30 08:48| 来源: 网络整理| 查看: 265

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

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

这篇主要就讲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&pm25_m1(:,1)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 on load ../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官方文档或者百度探索吧~

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

科研干饭人加油!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3