How do I make surf accurately reflect my data?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Consider this example:
A=zeros(5);
A(3,3)=1;
surf(A)
view(2)
When viewing this, one would be tempted to think that there's a peak at (3.5,3.5) and not at (3,3). Is there a way to make surf (or another function) show the right color exactly where the peak is?
Of course I want to implement this for more complicated data sets, so a general solution would be very nice.
0 Kommentare
Antworten (1)
Orion
am 18 Nov. 2014
you can play with shading
A=zeros(5);
A(3,3)=1;
surf(A);
pause(1)
view(2);
pause(1)
shading interp
4 Kommentare
Mike Garrity
am 19 Nov. 2014
Actually using FaceColor=texturemap works here.
A=zeros(5);
A(3,3)=1;
surf(A,'FaceColor','texturemap')
view(2)
What's happening in the FaceColor=flat case is that it's mapping the first 4x4 of the CData to the entire range of XData & YData. It has to do that because a 5x5 grid of XData & YData yields a 4x4 grid of quads.
But with FaceColor=texture, we're mapping the entire 5x5 contents of the CData to the 5x5 range of XData & YData. It can do that because texturemap doesn't have to assign one color per quad. It can split colors across quads so it can do any mapping. You could map a 7x5 CData onto a 3x4 XData & YData if you wanted to. So it gives you a lot of flexibility, but it will also let you make a mess if you're not careful.
Siehe auch
Kategorien
Mehr zu Data Distribution Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!