楼主: CappuccinoD3

[已答复] 请教大神这种散点密度图是怎么画出来的啊

[复制链接]

新手

5 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
 楼主| 发表于 2015-12-17 16:57:32 | 显示全部楼层
meatball1982 发表于 2015-12-17 15:37
你自己先写,有问题可以一起研究。
代码,暂时不给。

本人新手,就是不知道这个用法,没有头绪,我看一下您的例子就能明白了,望赐教

新手

5 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
 楼主| 发表于 2015-12-17 19:11:15 | 显示全部楼层
meatball1982 发表于 2015-12-17 15:37
你自己先写,有问题可以一起研究。
代码,暂时不给。

帮人帮到底,有点着急,谢谢您了

MATLAB 基础讨论
版块优秀回答者

中级

518 麦片

财富积分


5001500


71

主题

1374

帖子

97

最佳答案
  • 关注者: 67
发表于 2015-12-17 20:41:33 | 显示全部楼层
本帖最后由 meatball1982 于 2015-12-17 20:42 编辑
CappuccinoD3 发表于 2015-12-17 19:11
帮人帮到底,有点着急,谢谢您了

step01
看你的数据,每个都是整数。通过unique函数,可以知道你的x分别是什么。
x_q=unique(x);
有多少种可能,
n_x= length(x_q)

y同理。

step02

对于x_q(i)和y_q(j),找你的(x,y)有多少个。这个是你画图的关键。用一个二重循环实现。
如果有一个(x_q(i),y_q(j))在(x,y)中。his(i,j)的个数就+1.

step03
画图时,要知道你的x的范围。y的范围。对应到2D的网格中。
这时,用meshgrid函数实现。

step04
剩下,就是通过surf画图了。

每个函数都可以通过
doc 函数名
来看详细的说明,有例子。
你先试着写一下,或是一个step一个step写,有问题,再一起讨论吧。

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
  • 关注者: 1
发表于 2015-12-22 14:38:25 | 显示全部楼层
CappuccinoD3 发表于 2015-12-17 19:11
帮人帮到底,有点着急,谢谢您了
  1. clear all
  2. clc

  3. load x.mat
  4. load y.mat

  5. % plot(x,y,'.')

  6. x_q=unique(x);
  7. y_q=unique(y);
  8. n_x=length(x_q);
  9. n_y=length(y_q);

  10. for i=1:n_x
  11.     for j=1:n_y
  12.         tm_x=(x==x_q(i));
  13.         tm_y=(y==y_q(j));
  14.         tm_his=tm_x&tm_y;
  15.          his(i,j)=sum(tm_his);
  16.     end
  17. end

  18. [X,Y]=meshgrid(x_q,y_q);

  19. surf(X,Y,his','edgecolor','none')
  20. shading interp
  21. view(0,90)
  22. axis tight
  23. axis equal
复制代码


不好意思,之前的号被偷了。然后,被禁言了。这两天一直回复不了你。
代码如上,希望有用吧。

新手

10 麦片

财富积分


050


2

主题

9

帖子

0

最佳答案
发表于 2017-12-12 22:27:37 | 显示全部楼层
meatball1982 发表于 2015-12-17 20:41
step01
看你的数据,每个都是整数。通过unique函数,可以知道你的x分别是什么。
x_q=unique(x);

您好,我在查看您之前的帖子时,发现您的一个根据散点图求出密度分布图的程序很好,我想拿来用一下。但是在使用过程中发现吻合的不是很好。数据聚集的地方显示的不是很好。希望您能解答一下。坐标已上传
untitled.jpg

y.mat

8.82 KB, 下载次数: 22

x坐标

x.mat

8.83 KB, 下载次数: 19

y坐标

MATLAB 基础讨论
版块优秀回答者

中级

518 麦片

财富积分


5001500


71

主题

1374

帖子

97

最佳答案
  • 关注者: 67
发表于 2017-12-13 09:08:28 | 显示全部楼层
SAGAdonggua 发表于 2017-12-12 22:27
您好,我在查看您之前的帖子时,发现您的一个根据散点图求出密度分布图的程序很好,我想拿来用一下。但是 ...

你是完全根据之前的帖子实现的?
如果是,我看了一下,你们的数据还是有不一样的特点的,他的数据是固定的x,y,比如1,2,3,。。。
而你的,是11.233 ,13.935.
这使得在统计时,之前用到的unique找网格的方法不太适用你的数据。所以画出来的图,效果不太好。

思路啊。用hist3函数来作你的统计。注意看它的帮助。关于如何定义统计的边界那部分。效果就会好一些。
你自己写先。有问题,我们再探讨。
fig_hist3_meshgrd_surf.png

新手

10 麦片

财富积分


050


2

主题

9

帖子

0

最佳答案
发表于 2017-12-13 10:42:33 | 显示全部楼层
meatball1982 发表于 2017-12-13 09:08
你是完全根据之前的帖子实现的?
如果是,我看了一下,你们的数据还是有不一样的特点的,他的数据是固定的 ...

您的第一个例子说“每个都是整数,通过unique函数,”,我这个数据都是分数,所以我在想怎么在分数当中实现类似于unique这个功能。由于刚接触matlab,问的问题可能比较简单,请见谅

新手

10 麦片

财富积分


050


2

主题

9

帖子

0

最佳答案
发表于 2017-12-13 11:03:55 | 显示全部楼层
meatball1982 发表于 2017-12-13 09:08
你是完全根据之前的帖子实现的?
如果是,我看了一下,你们的数据还是有不一样的特点的,他的数据是固定的 ...

我按照您的提示用hist3()函数尝试了一下,效果如下
代码如下:
clear all
clc

load('y.mat')
load('z.mat')
% plot(y,z,'.')
scatter(y,z)

N=numel(y);
[n C]=hist3([z(:) y(:)],[150 150]);
p=n/N;
pcolor(C{2},C{1},p)
shading interp


希望您也能上传一下您的代码,我想对比学习一下。万分感谢!
untitled.jpg

MATLAB 基础讨论
版块优秀回答者

中级

518 麦片

财富积分


5001500


71

主题

1374

帖子

97

最佳答案
  • 关注者: 67
发表于 2017-12-13 20:18:13 | 显示全部楼层
SAGAdonggua 发表于 2017-12-13 11:03
我按照您的提示用hist3()函数尝试了一下,效果如下
代码如下:
clear all

思路说了,主要用到的函数也给了,所以实现的方法基本都一样。
你的简洁些。

  1. %% outline
  2. % http://www.ilovematlab.cn/thread-447738-2-1.html
  3. % 15#

  4. load x.mat
  5. load y.mat

  6. x_edge=[0:0.2: 20];
  7. y_edge=[-1:0.2:12];
  8. [X,Y]=meshgrid(x_edge,y_edge);

  9. [in]=[x;y]';

  10. %[N,C]=hist3(in,[40,40]);
  11. [N,C]=hist3(in,{x_edge y_edge});

  12. %N_med = medfilt2(N,[3 3 ]);
  13. N_med = medfilt2(N,[1 1]);

  14. subplot(2,1,2)
  15. surf(X,Y,N_med','edgecolor','none')
  16. shading interp
  17. view(0,90)
  18. axis equal
  19. axis tight

  20. subplot(2,1,1)
  21. plot(x,y,'.')

  22. axis equal
  23. axis tight
  24. axis([0 20 -1 12])
复制代码

新手

10 麦片

财富积分


050


2

主题

9

帖子

0

最佳答案
发表于 2017-12-14 20:58:26 | 显示全部楼层
meatball1982 发表于 2017-12-13 20:18
思路说了,主要用到的函数也给了,所以实现的方法基本都一样。
你的简洁些。

十分感谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表