10

我想在一个垂直的图中绘制数据集 1 和数据集 2。可惜数据很大,所以只是点的涂抹,看不到密度。我尝试了 hist3 和其他建议,但它覆盖了我的数据集并且分箱看起来很糟糕。

还有另一种绘制散点密度图的方法吗?真的没有Matlab函数吗?如果没有,我可以使用哪个程序来轻松生成这样的图?

这两个示例之间的混合:

示例 1

示例 2
(来源:bcgsc.ca

4

2 回答 2

20

感谢@Emil Albert的更正(缺少转置)


用 计算hist3和显示结果有什么问题imagesc

data1 = randn(1,1e5); %// example data
data2 = randn(1,1e5) + .5*data1 ; %// example data correlated to above
values = hist3([data1(:) data2(:)],[51 51]);
imagesc(values.')
colorbar
axis equal
axis xy

在此处输入图像描述


如果您想让轴与真实数据值一致:使用的第二个输出hist3获取 bin 中心的位置,并将它们传递给imagesc

data1 = randn(1,1e5); %// example data
data2 = 2*randn(1,1e5) + 1.2*data1 + 4; %// example data correlated to above
[values, centers] = hist3([data1(:) data2(:)],[51 51]);
imagesc(centers{:}, values.')
colorbar
axis xy

在此处输入图像描述

于 2014-01-08T22:54:15.923 回答
2

尝试在 File Exchange 上提交Violin Plot 。它非常可定制。我用它所有的时间。感谢@Jonas。

于 2014-01-08T21:44:58.707 回答