当前位置:   article > 正文

matlab画相关系数图(长时序--分时期分月份)_matlab长时间序列制图

matlab长时间序列制图

成图如下:

a图为例子,纵坐标是1-12月,横坐标是不同的因子。如左下第一格表示的就是x1与AO因子在十二月的相关性。

(a/b/c是x1因子,d/e/f是x2因子)

首先要计算出每个相关系数(可以在SPSS中完成),然后将它们按矩阵型输入到excel中,如下:

接着在matlab中读入数据,直接画图:

  1. corr = readtable('AONAODA.xls','Sheet','Sheet2');
  2. A1 = table2array(corr(1:12,2:4));
  3. A2 = table2array(corr(1:12,7:9));
  4. A3 = table2array(corr(1:12,12:14));
  5. A4 = table2array(corr(15:26,2:4));
  6. A5 = table2array(corr(15:26,7:9));
  7. A6 = table2array(corr(15:26,12:14));
  8. % CMap=slanCM(102);
  9. CMap=slanCM(95);
  10. figure;
  11. sub1 = subplot(2,3,1);
  12. imagesc(A2);
  13. caxis([-1 1]);
  14. xticklabels({'AO','NAO','DA'});
  15. yticks([1:2:12]);
  16. yticklabels({'Jan','Mar','May','Jul','Sep','Nov'});
  17. pos=set(sub1,'Position', [0.06 0.58 0.22 0.38]); %设置位置
  18. txt = {'(a) 1984-2000'};
  19. text(0.1,1,txt)
  20. % yticklabels({'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'});
  21. sub2 = subplot(2,3,2);
  22. imagesc(A3);
  23. caxis([-1 1]);
  24. xticklabels({'AO','NAO','DA'});
  25. yticks([1:2:12]);
  26. yticklabels({'Jan','Mar','May','Jul','Sep','Nov'});
  27. pos=set(sub2,'Position', [0.36 0.58 0.22 0.38]);
  28. txt = {'(b) 2001-2022'};
  29. text(0.1,1,txt)
  30. sub3 = subplot(2,3,3);
  31. imagesc(A1);
  32. caxis([-1 1]);
  33. xticklabels({'AO','NAO','DA'});
  34. yticks([1:2:12]);
  35. yticklabels({'Jan','Mar','May','Jul','Sep','Nov'});
  36. txt = {'(c) 1984-2022'};
  37. text(0.1,1,txt)
  38. pos=set(sub3,'Position', [0.66 0.58 0.22 0.38]);
  39. sub4 = subplot(2,3,4);
  40. imagesc(A5);
  41. caxis([-1 1]);
  42. xticklabels({'AO','NAO','DA'});
  43. yticks([1:2:12]);
  44. yticklabels({'Jan','Mar','May','Jul','Sep','Nov'});
  45. pos=set(sub4,'Position', [0.06 0.1 0.22 0.38]);
  46. txt = {'(d) 1984-2000'};
  47. text(0.1,1,txt)
  48. sub5 = subplot(2,3,5);
  49. imagesc(A6);
  50. caxis([-1 1]);
  51. xticklabels({'AO','NAO','DA'});
  52. yticks([1:2:12]);
  53. yticklabels({'Jan','Mar','May','Jul','Sep','Nov'});
  54. pos=set(sub5,'Position', [0.36 0.1 0.22 0.38]);
  55. txt = {'(e) 2001-2022'};
  56. text(0.1,1,txt)
  57. sub6=subplot(2,3,6);
  58. imagesc(A4);
  59. caxis([-1 1]);
  60. xticklabels({'AO','NAO','DA'});
  61. yticks([1:2:12]);
  62. yticklabels({'Jan','Mar','May','Jul','Sep','Nov'});
  63. pos=set(sub6,'Position', [0.66 0.1 0.22 0.38]);
  64. txt = {'(f) 1984-2022'};
  65. text(0.1,1,txt)
  66. colormap(CMap);
  67. h=colorbar('eastoutside','fontsize',12);
  68. set(get(h,'Title'),'string','Corr','fontsize',9)
  69. set(h,'YTick',-1:1:1,'fontsize',9);%设置colorbar单位
  70. pos3=set(h,'Position', [0.92 0.1 0.022 0.85]); %设置colorbar位置

上面的代码大部分都是重复的,只要弄懂第一个子图怎么画,后面的改变量就行。

(CMap是我下的颜色库,也可以用matlab自带的)

另外,多子图的colorbar的设置需要在最后单独写几行代码,可根据自己需求更改。

祝大家画出好看的图。

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

闽ICP备14008679号