当前位置:   article > 正文

MATLAB画散点密度图(附代码和测试数据的压缩包)

MATLAB画散点密度图(附代码和测试数据的压缩包)

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画散点密度图

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

散点误差图出图效果

图片

代码如下

具体使用,请自行修改

  1. function scatter_plot(x,y,derror)
  2. % 点状密度图
  3. % 根据测试数据画的,实际应用自己修改
  4. % --------------------改变密度大小------------------
  5. numbins = 50;
  6. % --------------------------------------------------
  7. =x;
  8. =y;
  9. % 找到最大值最小值
  10. MaxSP=max(x);MaxV=max(y);Maxi=1.1*max(MaxSP,MaxV);
  11. [values, centers] = hist3([X Y], [numbins numbins]);
  12. centers_X = centers{1,1};
  13. centers_Y = centers{1,2};
  14. binsize_X = abs(centers_X(2) - centers_X(1)/ 2;
  15. binsize_Y = abs(centers_Y(2) - centers_Y(1)) / 2;
  16. bins_X = zeros(numbins, 2);
  17. bins_Y = zeros(numbins, 2);
  18. for i = 1:numbins
  19.     bins_X(i, 1= centers_X(i) - binsize_X;
  20.     bins_X(i, 2= centers_X(i) + binsize_X;
  21.     bins_Y(i, 1= centers_Y(i) - binsize_Y;
  22.     bins_Y(i, 2= centers_Y(i) + binsize_Y;
  23. end
  24. scatter_COL = zeros(length(X), 1);
  25. onepercent = round(length(X) / 100);
  26. for i = 1:length(X)
  27.     if (mod(i,onepercent) == 0)
  28.         fprintf('.');
  29.     end
  30.     last_higher_X = NaN;
  31.     id_X = NaN;
  32.     c_X = X(i);
  33.     last_lower_X = find(c_X >= bins_X(:,1));
  34.     if (~isempty(last_lower_X))
  35.         last_lower_X = last_lower_X(end);
  36.     else
  37.         last_higher_X = find(c_X <= bins_X(:,2));
  38.         if (~isempty(last_higher_X))
  39.             last_higher_X = last_higher_X(1);
  40.         end
  41.     end
  42.     if (~isnan(last_lower_X))
  43.         id_X = last_lower_X;
  44.     else
  45.         if (~isnan(last_higher_X))
  46.             id_X = last_higher_X;
  47.         end
  48.     end
  49.     last_higher_Y = NaN;
  50.     id_Y = NaN;
  51.     c_Y = Y(i);
  52.     last_lower_Y = find(c_Y >= bins_Y(:,1));
  53.     if (~isempty(last_lower_Y))
  54.         last_lower_Y = last_lower_Y(end);
  55.     else
  56.         last_higher_Y = find(c_Y <= bins_Y(:,2));
  57.         if (~isempty(last_higher_Y))
  58.             last_higher_Y = last_higher_Y(1);
  59.         end
  60.     end
  61.     if (~isnan(last_lower_Y))
  62.         id_Y = last_lower_Y;
  63.     else
  64.         if (~isnan(last_higher_Y))
  65.             id_Y = last_higher_Y;
  66.         end
  67.     end
  68.     scatter_COL(i) = values(id_X, id_Y);
  69. end
  70. % 拟合曲线
  71. a=polyfit(x,y,1);
  72. ax=linspace(0,Maxi+10,2000);
  73. ay=a(1)*ax+a(2);
  74. Str_yx=['Y = ',num2str(round(a(1),2)),'*X +',num2str(round(a(2),2))];
  75. scatter(x, y, 20, scatter_COL'.' );
  76. hold on
  77. colormap('jet');
  78. colorbar;
  79. xlabel('GNSS-PWV/mm','FontSize',12,'FontName','Times New Roman');
  80. ylabel('ERA5-PWV/mm','FontSize',12,'FontName','Times New Roman');
  81. bx = linspace(0,120,2000);
  82. % 设置xy轴的界限
  83. % xlim([0 120]);ylim([0 120]);
  84. % 把误差表示在图上,位置根据自己需要改,我这是根据测试数据填的
  85. text(5,115,Str_yx,'FontSize',12,'FontName','Times New Roman')
  86. text(5,107,['Bias = ',num2str(round(100*derror(1))/100,'%.2f')],'FontSize',12,'FontName','Times New Roman')
  87. text(5,99,['RMSE = ',num2str(round(100*derror(2))/100,'%.2f')],'FontSize',12,'FontName','Times New Roman')
  88. text(5,91,['Cor = ',num2str(derror(3),'%.2f')],'FontSize',12,'FontName','Times New Roman')
  89. % 画拟合曲线
  90. plot(ax,ay,'r')
  91. hold on
  92. % 画对角线
  93. plot(bx,bx,'k');
  94. hold on
  95. title('测试数据','FontSize',12)
  96. box on
  97. grid on
  98. set(gca,'LineWidth',1.2)
  99. end

压缩包地址如下:

      压缩包里面的内容:

图片

      压缩包地址:

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/902442
推荐阅读
相关标签
  

闽ICP备14008679号