0%

【Matlab编程】matlab 画图

  1. 不用截图工具就可以将图保存成图像格式,并且没有背景颜色:saveas(gcf ,’outputname’,’png/jpg’),第三项省略时默认为fig.m文件

  2. 计算形如$(-1)^{2/3}$,应该是默认先算$(-1)^{(1/3)}$,plot的时候命令窗会警告略去了虚部, 为了避免不必要的麻烦$((-1)^2)^{1/3}$这样写,例子如下:

    1
    2
    3
    4
    5
    6
    clear
    clc
    subplot(1,2,1);
    ezplot('x^2+(y-(x^2)^(1/3))^2-1',[-2,2]);
    subplot(1,2,2)
    ezplot('x^2+(y-x^(2/3))^2-1',[-2,2]);
  3. 获取图片纵轴刻度间隔:b=get(gca,'ytick'), y_tick=b(2)-b(1)

  4. excel中有三列数据,第一列是横坐标,第二列是纵坐标,第三列是所要画图的点的颜色深浅,第三列的值只有一个,但是如果表示成color,需要三个值,如[0 1 0]表示纯绿色。我在程序中用的是绿色的深浅,你也可以改成别的如红色、蓝色等。Plot(x,y,’*’,’color’,[0 z(i) 0])

  5. 画出来的总是实线穿过了这些小正方形,标识符,能不能设置成不穿过小正方形markerfacecolor 改成和你的背景颜色一样。plot(0,0,'-b^','visible','off');

  6. 原点在右侧:set(gca,'XDir','rev')

  7. 将第一个图和第三个图合并为一个图

    1
    2
    3
    subplot(2,2,[1 3])
    subplot(2,2,2)
    subplot(2,2,4)
  8. Ezplot应该写成函数式fplot可以写成等式,例如:ezplot('exp(x)-3*x^2'),不要写=0

  9. 画图纵坐标全部显示为分数(当然这个可以直接在图像上修改):set(gca,'XTickLabel',{'1/2','1/5','1/10','1/15','1/20'})

  10. ezplot()简易绘图函数,每次绘图的时候会自动清空当前坐标系 ,因此不支持hold on函数。例如:

    1
    2
    3
    ezplot('x^2',[-1,0]);
    hold on
    ezplot('x^2+1',[0,1]);

    可以修改为:

    1
    f=@(x)x.^2.*(x>=-1&x<=0)+(x.^2+1).*(x>=0&x<=1);
  11. 把colorbar的标度变成log型:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    clear,clc
    [x,y] = meshgrid(0:.1:10);
    z = 10.^((x-5).^2+(y-5).^2);
    contourf(x,y,log10(z))
    h = colorbar;
    l = get(h,'yticklabel');
    set(h,'yticklabel','');
    t = arrayfun(@(i)['10^{' l(i,:) '}'],1:size(l,1),'un',false);
    text(2.5*ones(size(l,1),1),get(h,'ytick'),t,'parent',h)*
  12. 画立体心形:ezsurf('5-sqrt(1-x^2-(y-abs(x))^2)*cos(30*(1-x^2-(y-abs(x))^2))',[-1,1,-1,2],100)

  13. 将横纵坐标改为天数、日期、年份等等,简便的方法就是直接在图形窗口进行可视化修改。如果画的图比较多,可以利用XTickLabel等相关程序语句编写。

  14. 坐标的标签:set(gca,'XTick',-pi:pi/2:pi)
    set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'})

  15. 用imagesc函数画图时,出来的图y轴坐标都是反的,解决办法:axis xy

  16. 画五角星:

    1
    2
    3
    4
    5
    6
    n=1:2:11;
    x=sin(0.4*n*pi);
    y=cos(0.4*n*pi);
    plot(x,y);
    axis([-1.5,1.5,-1.5,1.5]);
    axis square
坚持原创技术分享,您的支持将鼓励我继续创作!