MATLAB画散点密度图(附代码和测试数据的压缩包)
创始人
2024-11-11 10:04:40

1. 有关 Matlab 获取代码关注WZZHHH回复关键词,或者咸鱼关注:WZZHHH123

     怀俄明探空站数据解算PWV和Tm:怀俄明探空站数据解算PWV和Tm

     怀俄明多线程下载探空站数据(包括检查和下载遗漏数据的代码):怀俄明多线程下载

     对IGRAv2进行质量控制得到PWV和Tm的 matlab 代码:IGRAv2进行质量控制得到PWV和Tm

     算 IGRAv2 探空站的 Tm 和 PWV:IGRAv2计算Tm和PWV

     提取探空站 IGRAv2 全部数据:

     ERA5 解算合集(温度、气压、PWV、水汽压和 Tm)代码获取:ERA5合集

MATLAB画散点密度图

      代码、测试数据的压缩包在文末,可自行下载测试出图效果

散点误差图出图效果

图片

代码如下

具体使用,请自行修改

function scatter_plot(x,y,derror) % 点状密度图 % 根据测试数据画的,实际应用自己修改 % --------------------改变密度大小------------------ numbins = 50; % --------------------------------------------------  X =x; Y =y; % 找到最大值最小值 MaxSP=max(x);MaxV=max(y);Maxi=1.1*max(MaxSP,MaxV);  [values, centers] = hist3([X Y], [numbins numbins]); centers_X = centers{1,1}; centers_Y = centers{1,2}; binsize_X = abs(centers_X(2) - centers_X(1)) / 2; binsize_Y = abs(centers_Y(2) - centers_Y(1)) / 2; bins_X = zeros(numbins, 2); bins_Y = zeros(numbins, 2); for i = 1:numbins     bins_X(i, 1) = centers_X(i) - binsize_X;     bins_X(i, 2) = centers_X(i) + binsize_X;     bins_Y(i, 1) = centers_Y(i) - binsize_Y;     bins_Y(i, 2) = centers_Y(i) + binsize_Y; end scatter_COL = zeros(length(X), 1); onepercent = round(length(X) / 100); for i = 1:length(X)     if (mod(i,onepercent) == 0)         fprintf('.');     end     last_higher_X = NaN;     id_X = NaN;     c_X = X(i);     last_lower_X = find(c_X >= bins_X(:,1));     if (~isempty(last_lower_X))         last_lower_X = last_lower_X(end);     else         last_higher_X = find(c_X <= bins_X(:,2));         if (~isempty(last_higher_X))             last_higher_X = last_higher_X(1);         end     end     if (~isnan(last_lower_X))         id_X = last_lower_X;     else         if (~isnan(last_higher_X))             id_X = last_higher_X;         end     end     last_higher_Y = NaN;     id_Y = NaN;     c_Y = Y(i);     last_lower_Y = find(c_Y >= bins_Y(:,1));     if (~isempty(last_lower_Y))         last_lower_Y = last_lower_Y(end);     else         last_higher_Y = find(c_Y <= bins_Y(:,2));         if (~isempty(last_higher_Y))             last_higher_Y = last_higher_Y(1);         end     end     if (~isnan(last_lower_Y))         id_Y = last_lower_Y;     else         if (~isnan(last_higher_Y))             id_Y = last_higher_Y;         end     end     scatter_COL(i) = values(id_X, id_Y); end  % 拟合曲线 a=polyfit(x,y,1); ax=linspace(0,Maxi+10,2000); ay=a(1)*ax+a(2);  Str_yx=['Y = ',num2str(round(a(1),2)),'*X +',num2str(round(a(2),2))];   scatter(x, y, 20, scatter_COL, '.' ); hold on  colormap('jet'); colorbar;  xlabel('GNSS-PWV/mm','FontSize',12,'FontName','Times New Roman'); ylabel('ERA5-PWV/mm','FontSize',12,'FontName','Times New Roman');   bx = linspace(0,120,2000);  % 设置xy轴的界限 % xlim([0 120]);ylim([0 120]);  % 把误差表示在图上,位置根据自己需要改,我这是根据测试数据填的 text(5,115,Str_yx,'FontSize',12,'FontName','Times New Roman') text(5,107,['Bias = ',num2str(round(100*derror(1))/100,'%.2f')],'FontSize',12,'FontName','Times New Roman') text(5,99,['RMSE = ',num2str(round(100*derror(2))/100,'%.2f')],'FontSize',12,'FontName','Times New Roman') text(5,91,['Cor = ',num2str(derror(3),'%.2f')],'FontSize',12,'FontName','Times New Roman')   % 画拟合曲线 plot(ax,ay,'r') hold on  % 画对角线 plot(bx,bx,'k'); hold on  title('测试数据','FontSize',12) box on grid on  set(gca,'LineWidth',1.2) end 

压缩包地址如下:

      压缩包里面的内容:

图片

      压缩包地址:

      关注: WZZHHH,回复 MATLAB画散点密度图

>.< 有问题,请你问你的老师,师兄师姐。我也挺忙的。

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...