【程序设计】散点密度图
我仔细研究了一下,这个图还得根据自己学科以及想做的东西来进行计算,我这个学科更多统计的频率和数量,他们统计的是密度!
本次程序我自己编写,没使用matlab自带函数kdensity,因为我知道我统计的是什么?你知道你统计的是什么才行,所以本次就编写一个,剩下需要你自己根据自己的需求编写!
做完这个图,我发现和我之前做的南海涡旋统计一样的!
只是画法不一样,请你仔细看!
请看我本次画的: 散点涉及大小的变化,以及根据各自的数据改变大小!
%% 本次脚本主要解决粉丝需要的散点密度图
%% 看了名称就懂了,就是画散点哈,看了图片也还行
%% 多加个第三维度,给它填色分类填色!
%% 重点没给我数据,那我只能看着图片来构造数据了!
%% 微信公众号:海洋与大气科学
%% 时间:2022年11月10日
% 解释:
% 散点图我们都知道了,能够看出两个变量之间的相关性。
% 有时候数据量较大,怎么办呢,重叠在一起了!
%
clear;clc;close all;
x = randn(5000,1);
y = x * 3 + randn(5000,1);
figure
scatter(x,y,'.')
export_fig 原始.png -r300
%% 以下算出密度
inter1=0.1;
inter2=0.5
x_min=fix(min(x))-1;
y_min=fix(min(y))-1;
x_max=fix(max(x))+1;
y_max=fix(max(y))+1;
%%
xx=x_min:inter1:x_max;
yy=y_min:inter2:y_max;
[xx,yy]=meshgrid(xx,yy);
[m,n]=size(xx);
l=size(x);
%% 算出密度!在这个网格点内我们就加上1;算出共有多少密度!
data=zeros(m,n);
for i=1:l
ln=fix((x(i)-(x_min))/inter1)+1;
la=fix((y(i)-(y_min))/inter2)+1;
data(la,ln)=data(la,ln)+1;
end
%% 画图
%% 添加colormore
cmap=colormore_45(100);
num=45
figure
contourf(xx,yy,data./sum(data(:)),100,'linestyle','none')
colorbar
colormap(cmap)
export_fig(['填色',num2str(num),'.png'],'-r300')
%%
data(find(data==0))=nan;
figure
contourf(xx,yy,data,200,'linestyle','none')
colorbar
colormap(cmap)
export_fig(['填色2',num2str(num),'.png'],'-r300')
%%
% Plot scatter plot
sumdata=sum(data(:));
data(find(data==0))=nan;
x_new=reshape(xx,m*n,1);
y_new=reshape(yy,m*n,1);
z_new=reshape(data,m*n,1);
%% 散点大小 26
figure
h = scatter(x_new,y_new,26,z_new,'filled');
colorbar
colormap(cmap)
export_fig(['散点26',num2str(num),'.png'],'-r300')
%% 散点大小 16
figure
h = scatter(x_new,y_new,16,z_new,'filled');
colorbar
colormap(cmap)
export_fig(['散点16',num2str(num),'.png'],'-r300')
%% 散点大小 36
figure
h = scatter(x_new,y_new,16,z_new,'filled');
colorbar
colormap(cmap)
export_fig(['散点36',num2str(num),'.png'],'-r300')
%% 散点大小 361
figure
h = scatter(x_new,y_new,z_new,z_new,'filled');
colorbar
colormap(cmap)
export_fig(['散点361',num2str(num),'.png'],'-r300')
原创转载标注来源!谢谢!