How do I make surf accurately reflect my data?
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(1 个)
Orion
2014-11-18
you can play with shading
A=zeros(5);
A(3,3)=1;
surf(A);
pause(1)
view(2);
pause(1)
shading interp
4 个评论
Mike Garrity
2014-11-19
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Distribution Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!