How can I make a “color map” plot in matlab?

前端 未结 4 540
伪装坚强ぢ
伪装坚强ぢ 2020-12-12 17:16

I have some data (a function of two parameters) stored in a matlab format, and I\'d like to use matlab to plot it. Once I read the data in, I use mesh() to make

4条回答
  •  [愿得一人]
    2020-12-12 17:53

    By default mesh will color surface values based on the (default) jet colormap (i.e. hot is higher). You can additionally use surf for filled surface patches and set the 'EdgeColor' property to 'None' (so the patch edges are non-visible).

    [X,Y] = meshgrid(-8:.5:8);
    R = sqrt(X.^2 + Y.^2) + eps;
    Z = sin(R)./R;
    
    % surface in 3D
    figure;
    surf(Z,'EdgeColor','None');
    

    enter image description here

    2D map: You can get a 2D map by switching the view property of the figure

    % 2D map using view
    figure;
    surf(Z,'EdgeColor','None');
    view(2);    
    

    enter image description here

    ... or treating the values in Z as a matrix, viewing it as a scaled image using imagesc and selecting an appropriate colormap.

    % using imagesc to view just Z
    figure;
    imagesc(Z); 
    colormap jet; 
    

    enter image description here

    The color pallet of the map is controlled by colormap(map), where map can be custom or any of the built-in colormaps provided by MATLAB:

    enter image description here

    Update/Refining the map: Several design options on the map (resolution, smoothing, axis etc.) can be controlled by the regular MATLAB options. As @Floris points out, here is a smoothed, equal-axis, no-axis labels maps, adapted to this example:

    figure;
    surf(X, Y, Z,'EdgeColor', 'None', 'facecolor', 'interp');
    view(2);
    axis equal; 
    axis off;
    

    enter image description here

提交回复
热议问题