matlab画散点密度图

花了一天功夫到处查如何画散点密度图,
搜到一个现成的程序:
http://www.mathworks.co.uk/matlabcentral/fileexchange/8577-scatplot ;
scatplot.m
by alex sanchez
Scatter plot with color indicating data density.

但是数据点比较多的时候画图很慢。。。

继续搜,找到网友分享的一个方法,用了一下,觉得好用,吼吼,转载如下:
下面均为热心网友分享内容 :-D ------------------------------
http://www.matlabsky.com/forum.php?mod=viewthread&tid=14784
======================================================
为了做这个真是研究了N天。

最后再一些大神的启发下做出来了。用的scatter.为了颜色各种排序。而且还需要把两列数据合成一个,比如56,78是一组点,大概就是合成56.078,然后在统计分类神马的。出图非常慢。然后给老师看,老师说这方法行但是不好,因为x,y分量地位不一样。我开始据理力争啊。因为做了好久的啊。可后来觉得是这样的.具体大家可以分析分析。

然后老师给我提供个思路,就是根据x,y的最大最小值将坐标分成若干小格,然后统计落在每个小格里的点数,最后形成的就是一个矩阵,然后直接出图就行了。

然后我就试着做了。。。结果,瞬间做完!效果还非常好,而且速度快还不卡。诶西。可惜我那么长时间了。

所以我现在觉得自己找方法,自己网上搜索固然重要,同时这个搜索,思考方法的过程也是种锻炼。

但是要是有老师,同学啥的,一定要先请教一下,互相讨论讨论,会事半功倍的。

不再废话,上代码。其实很简单。我就直接从我程序中拿出来了。肯定不能自动运行。谁需要时自己改改。不明白再问我。

其实代码真的很简单!关键是方法啊,方法。上面的图是文章图截的。我做出来效果跟那个是一样的。就不再截图了。

[M N]=size(x);

maxx=max(x);
minx=min(x);
maxy=max(y);
miny=min(y);
tj=zeros(401,401); %经各种算我的数据分成400比较正好。x,y都将近9万个数。图像得到的。
xfd=(maxx-minx)/400;
yfd=(maxy-miny)/400;
for i=1:M
i_tmp=int32((x(i)-minx)/xfd)+1;
j_tmp=int32((y(i)-miny)/yfd)+1;
tj(i_tmp,j_tmp)=tj(i_tmp,j_tmp)+1;
end

tjmax=max(max(tj)); %我程序需要找出最大值
[i,j]=find(tj==tjmax);

i=mean(i) ;%因为最大值不只一个,取个平均。因为我不需要那个确切的点。
j=mean(j);

image(tj)

============================================================

文章转载地址:http://blog.sina.com.cn/s/blog_721ab83c0101dxmj.html

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值