Matlab绘制标准偏差线之间的不同阴影

Matlab绘制标准偏差线之间的不同阴影,matlab,plot,std,Matlab,Plot,Std,我在文章中使用的情节有问题。 在网上进行了大量搜索之后,我仍然没有找到解决方案,因此我将尽可能清楚地描述我的问题: 我正在绘制两个参数,并用fill函数添加了它们的标准偏差。因为我不想使用颜色,所以我想对标准偏差之间的空间使用不同的着色。 到目前为止,我遇到的问题是,我无法指定,阴影在一个参数的标准偏差之间是一致的,如图中所示。我想有一种类型的阴影之间的点线和另一种类型的阴影之间的实线 z = linspace(1,101,101)'; f=figure; set(f,'Units', 'no

我在文章中使用的情节有问题。 在网上进行了大量搜索之后,我仍然没有找到解决方案,因此我将尽可能清楚地描述我的问题:

我正在绘制两个参数,并用fill函数添加了它们的标准偏差。因为我不想使用颜色,所以我想对标准偏差之间的空间使用不同的着色。 到目前为止,我遇到的问题是,我无法指定,阴影在一个参数的标准偏差之间是一致的,如图中所示。我想有一种类型的阴影之间的点线和另一种类型的阴影之间的实线

z = linspace(1,101,101)';

f=figure;
set(f,'Units', 'normalized', 'outerposition', [0 0 1 1]);

fill( [z' fliplr(z')],  [Parameter1_plus_std' fliplr(Parameter1_minus_std')], 'k');
alpha(0.4);
hold on
plot(normal,Parameter1_mean,'k','LineWidth',2);

fill( [z' fliplr(z')],  [Parameter2_plus_std' fliplr(Parameter2_minus_std')], 'k--');
alpha(0.2);
hold on
plot(Parameter2_mean,'k--','LineWidth',2);

在图中,您可以看到较暗的阴影位于圆点线和实线之间,应该位于圆点线之间


如果您能想到这一点,我将不胜感激

这是因为您使用了透明度。你不能用透明度达到你想要的效果,你必须使用纯色

例如:

figure('Units', 'normalized', 'outerposition', [0 0 1 1]);
hold on

fill( [z' fliplr(z')],  [Parameter1_plus_std' fliplr(Parameter1_minus_std')], 0.4*[1 1 1], 'Linestyle', '-');
plot(normal,Parameter1_mean,'k-','LineWidth',2);

fill( [z' fliplr(z')],  [Parameter2_plus_std' fliplr(Parameter2_minus_std')], 0.2*[1 1 1], 'Linestyle', '--');
plot(Parameter2_mean,'k--','LineWidth',2);
请注意,我不能在这里执行该代码,因为我没有数据,这是一个盲点,可能包含一些小错误需要更正


最好,

我假设您使用了
alpha
使绘图的所有线条都可见。问题是,两个半透明的填充被添加,因此它们重叠的地方更暗。因此,您不能将
alpha
用于您想要实现的目标。但是使用第三个参数
fill
可以指定填充的纯色。要使用不同的灰度,请使用RGB定义和三元素向量,如
[0.5 0.5 0.5]

现在,您可以使用
'LineStyle'、'none'
'EdgeColor'、'none'
生成具有不同灰度无边框的两种填充。然后在上面画出所有的线

代码如下:

结果是:


使用此功能的可能重复,我只能看到一个std,而另一个隐藏在它后面。但使用透明颜色是个问题,这是一个很好的提示:)
z = linspace(1,101,101)';

% generate some data to plot
normal = z;
Parameter1_mean = 9.225e-06.*z.^3-0.00159.*z.^2+0.07392.*z-0.4292;
Parameter1_plus_std = Parameter1_mean+0.08;
Parameter1_minus_std = Parameter1_mean-0.11;
Parameter2_mean = 9.225e-06.*z.^3-0.00156.*z.^2+0.07332.*z-0.4232;
Parameter2_plus_std = Parameter2_mean+0.11;
Parameter2_minus_std = Parameter2_mean-0.08;

% create figure
figure('Units', 'normalized', 'outerposition', [0 0 1 1]);
hold on

% plot the two solid fillings without border
fill([z',fliplr(z')], [Parameter1_plus_std',fliplr(Parameter1_minus_std')], 0.8*[1 1 1], 'EdgeColor','none');
fill([z',fliplr(z')], [Parameter2_plus_std',fliplr(Parameter2_minus_std')], 0.6*[1 1 1], 'EdgeColor','none');

% plot all the lines
plot(normal,Parameter1_mean,'k-','LineWidth',2);
plot(Parameter1_plus_std,'k-')
plot(Parameter1_minus_std,'k-')
plot(Parameter2_mean,'k--','LineWidth',2);
plot(Parameter2_plus_std,'k--')
plot(Parameter2_minus_std,'k--')

% some tweaking
xlim([min(z),max(z)])