Matlab中具有密度的散点图

Posted

技术标签:

【中文标题】Matlab中具有密度的散点图【英文标题】:Scatter plot with density in Matlab 【发布时间】:2014-01-27 04:38:27 【问题描述】:

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

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

这两个例子的混合:

(来源:bcgsc.ca)

【问题讨论】:

我不能 100% 确定我明白了这个问题 - 但是半透明的圆圈不能解决你的问题吗?在较暗的地方密度会更高(由于更多的圆圈重叠在那里)。如果这足够好,则无法通过“标准”方式(设置绘图/散点图的 alpha)来完成(afaik),但是有一种使用补丁(可以是半透明的)的解决方法,例如,参见 [@987654323 @ 【参考方案1】:

感谢@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

【讨论】:

在上面的例子中我可以使用保持开/关的方法吗? @C.Colden 当然。您可以使用hold on 并在其上绘制线条。在我的代码之后尝试例如hold on; plot(1:50,1:50,'k--','linewidth',1.5) 有没有办法让 x,y 轴对应于实际采用的随机数?我确信随机数的浓度并不接近图中所示的点 (25,25)。如果可能的话会提供更多信息。 @Integral 要查看实际数字,您可以使用plotscatter,它们会在数字上绘制一个标记。在我上面的代码中,使用plot(data1, data2, '.', 'markersize', .1)。但是如果你有很多点,就很难区分它们 @Integral 我想我现在明白了。请查看编辑后的答案【参考方案2】:

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

【讨论】:

以上是关于Matlab中具有密度的散点图的主要内容,如果未能解决你的问题,请参考以下文章

100天精通Python(可视化篇)——第82天:matplotlib绘制不同种类炫酷散点图参数说明+代码实战(二维散点图三维散点图散点图矩阵)

Excel中如何正确地画XY散点图

Scilab中按密度着色的散点图

如何用matlab 画散点图 如何标记数据点的颜色

pandas散点图-plot.scatter

2018-10-31用R绘制散点图矩阵(成对的散点图)