Adding points with error bars into a Matlab scatter plot
我已经在matlab中执行了多维聚类分析。对于每个聚类,我计算了均值和协方差(假设条件独立)。
我从原始数据中选择了二维或三维,并将其绘制为散点图或散点图3。
现在,我想将群集均值和相应的标准偏差添加到同一图中。
换句话说,我要在散点图中添加一些带有误差线的数据点。
这个问题几乎是我想要的。但是我可以选择条形而不是盒子,我想知道在那种情况下是否有一种内置的方法可以轻松完成此任务。
有关如何执行此操作的任何建议?
一旦您意识到线段可能足以满足您的目的(并且可能不如通常的带有晶须的误差线丑陋,具体取决于点的数量),则可以执行一些简单的操作(适用于任何绘图包,而不仅仅是MATLAB)。
只需绘制一个散点图,然后编写一个循环即可绘制要与误差线相对应的所有线段(或者按照与我先对误差线所做的相反的顺序进行操作,然后再按照散点图进行绘制,这取决于您是否想要点)或您的错误栏位于顶部)。
这是简单的MATLAB代码,还有一个示例图,显示了二维误差条(对无聊的近线性度很抱歉):
如您所见,您可以为每个轴绘制不同颜色的误差线以帮助可视化。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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; |
通过一些额外的工作,如果您真的想要晶须,可以将其添加到错误栏中也就不难了。
如果您对图形的外观不太挑剔并且正在寻找性能,则内置函数确实通常是一个不错的选择。
我的第一个想法是尝试使用箱线图,它有很多选择,因此,它们的一种组合可能会为您提供所需的结果。
旁注:乍一看,您提到的答案看起来效率不高,因此在达到可加速的目标时,您可能必须管理自己的期望。