Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plot 将带有误差条的点添加到Matlab散点图中_Plot_Matlab - Fatal编程技术网

Plot 将带有误差条的点添加到Matlab散点图中

Plot 将带有误差条的点添加到Matlab散点图中,plot,matlab,Plot,Matlab,我在matlab中进行了多维聚类分析。对于每个簇,我计算了均值和协方差(假设条件独立) 我从原始数据中选择了两个或三个维度,并将其绘制成散点图或散点图。 现在我想把聚类平均值和相应的标准偏差添加到同一个图中 换句话说,我想在散点图中添加一些带有误差条的数据点 这几乎就是我想要的。但我可以用酒吧而不是盒子,我想知道在这种情况下是否有一种内置的方法可以省力地完成这项工作 有什么建议吗?如果您对图形的外观不太挑剔,并且希望获得性能,那么内置函数通常是一个不错的选择 我的第一个想法是尝试使用a,它有很多

我在matlab中进行了多维聚类分析。对于每个簇,我计算了均值和协方差(假设条件独立)

我从原始数据中选择了两个或三个维度,并将其绘制成散点图或散点图。 现在我想把聚类平均值和相应的标准偏差添加到同一个图中

换句话说,我想在散点图中添加一些带有误差条的数据点

这几乎就是我想要的。但我可以用酒吧而不是盒子,我想知道在这种情况下是否有一种内置的方法可以省力地完成这项工作


有什么建议吗?

如果您对图形的外观不太挑剔,并且希望获得性能,那么内置函数通常是一个不错的选择

我的第一个想法是尝试使用a,它有很多选择,所以可能它们的一个组合会给你你需要的结果


旁注:乍一看,你提到的答案似乎不是很低效,因此当谈到可实现的加速时,你可能不得不管理你的期望。

一旦你意识到线段可能足以满足你的目的(并且可能比通常的带胡须的错误条更难看,具体取决于点数),您可以做一些非常简单的事情(这可能适用于任何绘图软件包,而不仅仅是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;

通过一些额外的工作,如果您真的需要,将胡须添加到错误栏并不太难。

很抱歉没有具体说明。我说的不是执行速度,而是编程工作量。定义一个函数只是为了得到一个错误框对我来说似乎有点过分。@Konstantin我可以想象,你不想为每个功能添加一个函数,但是如果它已经由某人编写,那么复制它就不需要花费太多精力。关键是,我希望matlab内置一些东西。这本来会更容易,所以问题就来了。