プロットする関数 y=x^2 があり、この曲線で囲まれた領域を y 方向に沿って黒から赤へのグラデーション色で塗りつぶしたいと思います。色はネットで見つけた
x = linspace(-3, 3, 20)';
f = x.^2;
M = f.^2;
N = length(x);
verts = [x(:), f(:)-max(f); x(:) zeros(N,1)];
q = (1:N-1)';
faces = [q, q+1, q+N+1, q+N];
p = patch('Faces', faces, 'Vertices', verts, 'FaceVertexCData', [M(:); M(:)], 'FaceColor', 'interp', 'EdgeColor', 'none')
このコードは、次のように、曲線でx軸にバインドされた領域を表示します
でも埋めたいのはWHITEエリア。だから私は次のようにコードを変更します
x = linspace(-3, 3, 20)';
f = x.^2;
M = f.^2;
N = length(x);
verts = [x(:), f(:)-max(f); x(:) zeros(N,1)];
q = (1:N-1)';
faces = [q, q+1, q+N+1, q+N];
p = patch('Faces', faces, 'Vertices', verts, 'FaceVertexCData', [M(:); M(:)], 'FaceColor', 'interp', 'EdgeColor', 'none')
これは私に次のようなものを与えます
正しい領域を埋めますが、2 つの問題があります。
- 画像全体が 9 単位だけ負の y 軸にシフト
- グラデーションの色は左から右に塗りつぶされましたが、下から上 (垂直) に塗りつぶしたい
- カラーマップは黒から赤に定義されていませんでした (ただし、手動で変更できます)。