将带误差条的点添加到Matlab散点图中
问题描述:
我已经在matlab中执行了多维聚类分析。对于每个集群,我计算了均值和协方差(假设条件独立)。将带误差条的点添加到Matlab散点图中
我从我的原始数据中选择了两个或三个维度,并将其绘制成散点图或散点图。 现在我想将cluster-means和相应的标准偏差添加到同一个图中。
换句话说,我把一些带误差线的数据点添加到散点图中。
This question几乎是我想要的。但是我可以用条而不是盒子,我想知道在这种情况下是否有一种内置的方式可以用较少的努力来完成。
有关如何做到这一点的任何建议?
答
如果你对图表看起来不太挑剔,并且正在寻找性能,内置函数通常是一个不错的选择。
我的第一个想法是尝试使用boxplot,它有相当多的选项,所以可能它们的组合会给你你需要的结果。
旁注:乍一看,你提到的答案看起来效率不高,所以当谈到可实现的加速时,你可能不得不管理你的期望。
答
一旦您意识到线段可能足以达到您的目的(并且可能不像通常的胡须的误差棒,取决于点数),您可以做一些非常简单的事情(这可能适用于任何绘图软件包,而不仅仅是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;
随着一些额外的工作,如果你真的想要它们,将错误添加到你的错误条中并不难。
对不起,不具体。我不是在谈论执行速度,而是在编程方面。定义一个函数只是为了得到一个错误框似乎对我来说有点多。 – 2013-09-25 14:18:33
@Konstantin我可以想象,你不想为每个功能添加一个函数,但是如果它已经被某人写了,它不需要太多的努力来复制它。 – 2013-09-25 14:24:54
问题是,我期待matlab有内置的东西。这会更容易,因此也是一个问题。 – 2013-09-25 19:49:54