Matlab의 음영 플롯
Oct 13 2020
불확실성을 나타내는 음영 영역 (예 : 신뢰 구간)을 사용하여 Matlab에서 함수를 플로팅하고 싶습니다. 이 fill기능을 사용하여 색상 패치를 만들 수 있습니다 . 예를 들면
x = linspace(0, 2*pi, 100);
f = cos(x);
fUp = cos(x) + 1;
fLow = cos(x) - 1;
x2 = [x, fliplr(x)];
plot(x, f, 'k')
hold on
fill(x2, [f, fliplr(fUp)], 0.7 * ones(1, 3), 'linestyle', 'none', 'facealpha', 0.4);
fill(x2, [fLow, fliplr(f)], 0.7 * ones(1, 3), 'linestyle', 'none', 'facealpha', 0.4);
이 기능 사이 회색 음영 영역을 생성 fLow하고 fUp함께 f중간 아래 그림에서와 같이 단단한 검은 선으로 표시된다.
이제 신뢰 구간의 하한 (상한)에 접근 할 때 음영 영역의 색상이 저하되도록하고 싶습니다. 특히 경계에 가까워 질수록 음영 부분이 더 밝아 지길 바랍니다. 그것을 할 방법이 있습니까? 내 목적에 필요할 수 있다고 생각하기 때문에 두 개의 개별 패치를 수행하고 있습니다.
답변
7 obchardon Oct 13 2020 at 16:02
CI를 n하위 영역 으로 분할 할 수 있습니다 .
x = linspace(0, 2*pi, 100);
f = cos(x);
n = 20; % step number
g = 0.3; % grayscale intensity
fUp = cos(x) + linspace(0,1,n).';
fLow = cos(x) - linspace(0,1,n).';
x2 = [x, fliplr(x)];
plot(x, f, 'k')
hold on
fill(x2, [repmat(f,n,1), fliplr(fUp)], g * ones(1, 3), 'linestyle', 'none', 'facealpha', [1/n]);
fill(x2, [fLow, repmat(fliplr(f),n,1)], g * ones(1, 3), 'linestyle', 'none', 'facealpha', [1/n]);
어떤 농산물 :
하위 영역이 겹치고 최대 facealpha를 생성합니다. n*(1/n) * g = g
이 방법은 n각면에 하위 영역을 생성하기 때문에 실제로 메모리 효율적이지 않으며 선형 음영에서만 작동합니다.
CI가 비선형이면이 부분을 조정해야합니다.
% Prediction Linear CI
% ↓ ↓
cos(x) + linspace(0,1,n).';
cos(x) - linspace(0,1,n).';
...에
% Prediction Non linear CI
% ↓ ↓
cos(x) + your_non_linear_CI_distribution;
cos(x) - your_non_linear_CI_distribution;