我在matlab中进行了多维聚类分析。对于每个聚类,我计算了均值和协方差(假设条件独立性)。
我从原始数据中选择了两个或三个维度,并将其绘制到散点图或散点图中。 现在我想将cluster-means和相应的标准偏差添加到同一个图中。
换句话说,我想把一些带有误差条的数据点添加到散点图中。
This question几乎就是我想要的。但我可以用条形而不是盒子,我想知道在这种情况下是否有一种内置的方法可以用更少的努力来完成它。
有关如何做到这一点的任何建议吗?
答案 0 :(得分:2)
一旦你意识到线段可能足以达到你的目的(并且可能不像通常的带有胡须的误差棒那么难看,取决于点的数量),你可以做一些非常简单的事情(这可能适用于任何绘图包,而不仅仅是MATLAB)。
只需绘制一个散点图,然后编写一个循环来绘制您想要对应于误差线的所有线段(或者按照与我先使用误差条相反的顺序执行,然后是散点图,具体取决于您是否需要点或者你的错误栏在上面。)
这是简单的MATLAB代码,以及一个显示二维误差线的示例图(对于无聊的近线性感到抱歉):
如您所见,您可以为不同颜色的每个轴绘制误差条,以帮助实现可视化。
function scatterError(x, y, xe, ye, varargin)
%Brandon Barker 01/20/2014
nD = length(x);
%Make these defaults later:
dotColor = [1 0.3 0.3]; % conservative pink
yeColor = [0, 0.4, 0.8]; % bright navy blue
xeColor = [0.35, 0.35, 0.35]; % not-too-dark grey
dotSize = 23;
figure();
set(gcf, 'Position', get(0,'Screensize')); % Maximize figure.
set(gca, 'FontSize', 23);
hold all;
for i = 1:nD
plot([(x(i) - xe(i)) (x(i) + xe(i))], [y(i) y(i)], 'Color', xeColor);
plot([x(i) x(i)], [(y(i) - ye(i)) (y(i) + ye(i))], 'Color', yeColor);
end
scatter(x, y, dotSize, repmat(dotColor, nD, 1));
set(gca, varargin{:});
axis square;
通过一些额外的工作,如果你真的需要它们,那么在你的误差线上添加胡须并不会太难。
答案 1 :(得分:0)
如果你对图表的外观不太挑剔并且正在寻找性能,那么内置函数确实是一个不错的选择。
我的第一个想法是尝试使用boxplot,它有很多选项,所以可能它们的一个组合将为您提供所需的结果。
旁注:乍一看你提到的答案看起来效率不高,所以你可能需要在实现可达到的加速时控制你的期望。