필터 지우기
필터 지우기

How to make contour plots transparent - in matlab R2015a?

조회 수: 28 (최근 30일)
ilupi
ilupi 2015년 10월 22일
답변: Will Grant 2021년 8월 31일
Hi, how can I make several contourf plots which are transparent? I tried the facealpha but the contour class has no facealpha property. Is there another way to make the contourf plots transparent?

답변 (4개)

Patricia Handmann
Patricia Handmann 2017년 11월 1일
Is there some news for Matlab 2017a how to do this in a nice way?
  댓글 수: 1
Thoralf Stein
Thoralf Stein 2019년 4월 4일
[~, hContour] = contourf(peaks(20), 10);
drawnow; % this is important, to ensure that FacePrims is ready in the next line!
hFills = hContour.FacePrims; % array of TriangleStrip objects
[hFills.ColorType] = deal('truecoloralpha'); % default = 'truecolor'
for idx = 1 : numel(hFills)
hFills(idx).ColorData(4) = 150; % default=255
end

댓글을 달려면 로그인하십시오.


Will Grant
Will Grant 2021년 8월 31일
See my answer here - working in R2020a

Walter Roberson
Walter Roberson 2015년 10월 22일
There is no known way to do this in R2014b, R2015a, or R2015b, other than to draw the contour plot yourself using other primitives such as patch()
In sufficiently old versions contourf created patch objects whose AlphaData or FaceAlpha could be adjusted. In the versions for a bit before R2014b, contour() and contourf() produced contourgroup objects which could not have their Alpha adjusted. The work-around in that era was to use contour3() which still generated patch objects, and to hack the ZData that was created to remove some NaN that prevented the faces from being filled. (I have a script somewhere that does this.)
  댓글 수: 3
Fahad Sultan
Fahad Sultan 2017년 2월 22일
What is the latest state on contourf, have you fixed the problems?
Walter Roberson
Walter Roberson 2017년 2월 22일
Unfortunately, at least up to R2016b, there is no Alpha property implemented for contour objects.

댓글을 달려면 로그인하십시오.


Boris Belousov
Boris Belousov 2016년 2월 25일
As a possible workaround, you may manually define a contour of the area which you want to make transparent. Here is an example where a part of a contour plot is shaded using another contour plot.
% Axes
X = 1:8;
Y = 1:9;
% Contour plot with four levels and three contour lines
Z = [1 1 1 1 1 0 0 0;
1 1 1 1 1 0 0 0;
1 1 1 1 1 0 0 0;
1 1 1 1 1 1 0 0;
1 1 1 1 1 1 0 0;
2 2 1 1 1 1 1 0;
2 2 2 1 1 1 1 1;
3 2 2 2 2 2 1 1;
3 3 3 3 2 2 1 1];
% Top layer that shades part of the plot
Z_f = [0 0 0 0 0 0 0 1;
0 0 0 0 0 0 0 1;
0 0 0 0 0 0 1 1;
0 0 0 0 0 0 1 1;
0 0 0 0 0 0 1 1;
0 0 0 0 0 1 1 1;
0 0 0 0 1 1 1 1;
0 0 0 0 1 1 1 1;
0 0 1 1 1 1 1 1];
% Get contour for the top-layer patch and close the figure
C = contourf(Z_f,'LevelList',0.5); close all
% Close the contour by adding two extra points
x = [C(1,2:end), X(end), X(end)];
y = [C(2,2:end), Y(1), Y(end)];
% Contour plot
contourf(Z,'LevelList',[0 0.5 1.5 2.5]);
% Transparent patch
hold on
fill(x,y,'m','FaceAlpha',0.5);
hold off

카테고리

Help CenterFile Exchange에서 Lighting, Transparency, and Shading에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by