我对用于文章的情节有疑问。 在网上进行了大量搜索之后,我仍然没有找到解决方案,所以我会尝试尽可能清楚地描述我的问题:
我正在绘制两个参数,并使用fill-function添加了它们的标准偏差。因为我不想使用颜色,所以我想对标准偏差之间的空间使用不同的阴影。 到目前为止我遇到的问题是,我无法指定,阴影在一个参数的标准偏差之间是一致的,如图所示。我希望在虚线和实线之间的另一种阴影之间有一种阴影。
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);
在图片中,您可以看到较暗的阴影位于虚线和实线之间,它应该位于虚线之间!
我会对此有任何想法感激不尽!
答案 0 :(得分:1)
我假设您使用alpha
使图表的所有线条都可见。问题是,两个半透明填充物被添加,因此在它们重叠的地方更暗。因此,您不能将alpha
用于您想要实现的目标。但是使用fill
的第三个参数,您可以指定填充的纯色。要使用不同的灰色阴影,请使用RGB定义和三元素矢量,如[0.5 0.5 0.5]
。
现在,您可以使用'LineStyle','none'
或'EdgeColor','none'
生成具有不同边框的不同灰度的两个填充。在将所有线条绘制在最上面之后。
以下是代码:
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)])
结果如下:
答案 1 :(得分:0)
这是因为你使用透明度。你不能用透明度来实现你想要的东西,你必须使用纯色。
例如:
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);
请注意,我无法在此执行该代码,因为我没有数据,这是一个盲目的镜头,可能包含很少的错误需要纠正。
最佳,