我在MATLAB中创建了一个带有五个点的示例散点图,如下所示:
x = linspace(0,pi,5);
y = cos(x);
scatter(x,y);
在我的情况下,每个点的y值应在如下定义的预定义范围内:
y_limits = {[0.9 1.1], [0.6 0.8], [-0.1 0.1], [-0.8 -0.6], [-1.1 -0.9]};
例如,y
点1
的{{1}}值应在x = 0
范围内。
我想以某种方式在同一个情节中很好地通过
绘制五个垂直边界我想在这种图形表示中获得一些比我更有经验的人的建议或示例代码。
答案 0 :(得分:2)
您可以使用errorbar
function
% Your example variables
x = linspace(0,pi,5)';
y = cos(x);
y_limits = [0.9, 1.1; 0.6, 0.8; -0.1, 0.1; -0.8, -0.6; -1.1, -0.9];
% Plot
errorbar(x, y, y - y_limits(:,1), y_limits(:,2) - y, 'x');
% Format: (x, y, negative error, positive error, point style)
结果:
编辑,您可以在调用errorbar
时设置图表的线条属性。例如,您可以使用较大的蓝色圆圈标记和较粗的红色误差条
使用:
errorbar(x, y, y - y_limits(:,1), y_limits(:,2) - y, 'o', 'MarkerSize', 2, 'MarkerFaceColor', 'b', 'MarkerEdgeColor', 'b', 'Color', 'r', 'LineWidth', 1);
注意这些图片我正在使用grid on
添加网格。第二个结果:
答案 1 :(得分:1)
使用line
命令创建行。
for i = 1:length(x)
line([x(i) x(i)], [y_limits{i}]);
end
可以使用patch
或fill
完成填充区域。对限制进行一些重新排序是必要的,以便给出的顺序遵循要填充的区域周围的路径。一个很好的技巧是在这些填充区域上使用alpha
命令来创建透明度。
hold on
y_corners = reshape([y_limits{:}], 2, length(x)).'; %make an array
y_corners = [y_corners(:,1); flipud(y_corners(:,2))]; %corners follow a path around the shape
fill([x fliplr(x)], y_corners, 'blue');
alpha(0.5);