精华内容
下载资源
问答
  • 下面就是重点:如何把上述图像转换成黑白图像,并填充不同条纹。首先,创建名为“applyhatch.m”的函数脚本。在同一路径下。代码如下:——复制即可。function applyhatch(h,patterns,colorlist) %APPLYHATCH Apply ...

    下面就是重点:如何把上述图像转换成黑白图像,并填充不同条纹。

    首先,创建名为“applyhatch.m”的函数脚本。

    在同一路径下。

    代码如下:——复制即可。

    function applyhatch(h,patterns,colorlist) %APPLYHATCH Apply hatched patterns to a figure %  APPLYHATCH(H,PATTERNS) creates a new figure from the figure H by %  replacing distinct colors in H with the black and white %  patterns in PATTERNS. The format for PATTERNS can be %    a string of the characters '/', '\', '|', '-', '+', 'x', '.' %    a cell array of matrices of zeros (white) and ones (black) % %  APPLYHATCH(H,PATTERNS,COLORS) maps the colors in the n by 3 %  matrix COLORS to PATTERNS. Each row of COLORS specifies an RGB %  color value. % %  Note this function makes a bitmap image of H and so is limited %  to low-resolution, bitmap output. % %  Example 1: %    bar(rand(3,4)); %    applyhatch(gcf,'\-x.'); % %  Example 2: %    colormap(cool(6)); %    pie(rand(6,1)); %    legend('Jan','Feb','Mar','Apr','May','Jun'); %    applyhatch(gcf,'|-+.\/',cool(6)); % %  See also: MAKEHATCH

    %  By Ben Hinkle, bhinkle@mathworks.com %  This code is in the public domain.   oldppmode = get(h,'paperpositionmode'); oldunits = get(h,'units'); set(h,'paperpositionmode','auto'); set(h,'units','pixels'); figsize = get(h,'position'); if nargin == 2   colorlist = []; end bits = hardcopy(h,'-dzbuffer','-r0'); set(h,'paperpositionmode',oldppmode);

    bwidth = size(bits,2); bheight = size(bits,1); bsize = bwidth * bheight; if ~isempty(colorlist)   colorlist = uint8(255*colorlist);   [colors,colori] = nextnonbw(0,colorlist,bits); else   colors = (bits(:,:,1) ~= bits(:,:,2)) | ...            (bits(:,:,1) ~= bits(:,:,3)); end pati = 1; colorind = find(colors); while ~isempty(colorind)   colorval(1) = bits(colorind(1));   colorval(2) = bits(colorind(1)+bsize);   colorval(3) = bits(colorind(1)+2*bsize);   if iscell(patterns)     pattern = patterns{pati};   elseif isa(patterns,'char')     pattern = makehatch(patterns(pati));   else     pattern = patterns;   end   pattern = uint8(255*(1-pattern));   pheight = size(pattern,2);   pwidth = size(pattern,1);   ratioh = ceil(bheight/pheight);   ratiow = ceil(bwidth/pwidth);   bigpattern = repmat(pattern,[ratioh ratiow]);   if ratioh*pheight > bheight     bigpattern(bheight+1:end,:) = [];   end   if ratiow*pwidth > bwidth     bigpattern(:,bwidth+1:end) = [];   end   bigpattern = repmat(bigpattern,[1 1 3]);   color = (bits(:,:,1) == colorval(1)) & ...           (bits(:,:,2) == colorval(2)) & ...           (bits(:,:,3) == colorval(3));   color = repmat(color,[1 1 3]);   bits(color) = bigpattern(color);   if ~isempty(colorlist)     [colors,colori] = nextnonbw(colori,colorlist,bits);   else     colors = (bits(:,:,1) ~= bits(:,:,2)) | ...              (bits(:,:,1) ~= bits(:,:,3));   end   colorind = find(colors);   pati = (pati + 1);   if pati > length(patterns)     pati = 1;   end end

    newfig = figure('units','pixels','visible','off'); imaxes = axes('parent',newfig,'units','pixels'); im = image(bits,'parent',imaxes); fpos = get(newfig,'position');

    set(newfig,'position',[fpos(1:2) figsize(3) figsize(4)+1]); set(imaxes,'position',[0 0 figsize(3) figsize(4)+1],'visible','off'); set(newfig,'visible','on');

    function [colors,out] = nextnonbw(ind,colorlist,bits) out = ind+1; colors = []; while out <= size(colorlist,1)   if isequal(colorlist(out,:),[255 255 255]) | ...         isequal(colorlist(out,:),[0 0 0])     out = out+1;   else     colors = (colorlist(out,1) == bits(:,:,1)) & ...              (colorlist(out,2) == bits(:,:,2)) & ...              (colorlist(out,3) == bits(:,:,3));     return   end end

    %而applyhatch函数需要调用下面的函数

    function A = makehatch(hatch) %MAKEHATCH Predefined hatch patterns %  MAKEHATCH(HATCH) returns a matrix with the hatch pattern for HATCH %   according to the following table: %      HATCH        pattern %     -------      --------- %        /          right-slanted lines %        \          left-slanted lines %        |          vertical lines %        -          horizontal lines %        +          crossing vertical and horizontal lines %        x          criss-crossing lines %        .          single dots % %  See also: APPLYHATCH

    %  By Ben Hinkle, bhinkle@mathworks.com %  This code is in the public domain.

    n = 6; A=zeros(n); switch (hatch) case '/'   A = fliplr(eye(n)); case '\'   A = eye(n); case '|'   A(:,1) = 1; case '-'   A(1,:) = 1; case '+'   A(:,1) = 1;   A(1,:) = 1; case 'x'   A = eye(n) | fliplr(diag(ones(n-1,1),-1)); case '.'   A(1:2,1:2)=1; otherwise   error(['Undefined hatch pattern "' hatch '".']); end

    展开全文
  • Matlab柱状饼状填充 1. 把下列代码保存为名为“applyhatch.m”的文件 function applyhatch(h,patterns,colorlist) %APPLYHATCH Apply hatched patterns to a figure % APPLYHATCH(H,PATTERNS) creates a ...
    Matlab画柱状、饼状填充图
    1.     把下列代码保存为名为“applyhatch.m”的文件
    function applyhatch(h,patterns,colorlist)
    %APPLYHATCH Apply hatched patterns to a figure
    %  APPLYHATCH(H,PATTERNS) creates a new figure from the figure H by
    %  replacing distinct colors in H with the black and white
    %  patterns in PATTERNS. The format for PATTERNS can be
    %    a string of the characters '/', '\', '|', '-', '+', 'x', '.'
    %    a cell array of matrices of zeros (white) and ones (black)
    %
    %  APPLYHATCH(H,PATTERNS,COLORS) maps the colors in the n by 3
    %  matrix COLORS to PATTERNS. Each row of COLORS specifies an RGB
    %  color value.
    %
    %  Note this function makes a bitmap image of H and so is limited
    %  to low-resolution, bitmap output.
    %
    %  Example 1:
    %    bar(rand(3,4));
    %    applyhatch(gcf,'\-x.');
    %
    %  Example 2:
    %    colormap(cool(6));
    %    pie(rand(6,1));
    %    legend('Jan','Feb','Mar','Apr','May','Jun');
    %    applyhatch(gcf,'|-+.\/',cool(6));
    %
    %  See also: MAKEHATCH
    %  By Ben Hinkle, bhinkle@mathworks.com
    %  This code is in the public domain.
     
    oldppmode = get(h,'paperpositionmode');
    oldunits = get(h,'units');
    set(h,'paperpositionmode','auto');
    set(h,'units','pixels');
    figsize = get(h,'position');
    if nargin == 2
      colorlist = [];
    end
    bits = hardcopy(h,'-dzbuffer','-r0');
    set(h,'paperpositionmode',oldppmode);
    bwidth = size(bits,2);
    bheight = size(bits,1);
    bsize = bwidth * bheight;
    if ~isempty(colorlist)
      colorlist = uint8(255*colorlist);
      [colors,colori] = nextnonbw(0,colorlist,bits);
    else
      colors = (bits(:,:,1) ~= bits(:,:,2)) | ...
               (bits(:,:,1) ~= bits(:,:,3));
    end
    pati = 1;
    colorind = find(colors);
    while ~isempty(colorind)
      colorval(1) = bits(colorind(1));
      colorval(2) = bits(colorind(1)+bsize);
      colorval(3) = bits(colorind(1)+2*bsize);
      if iscell(patterns)
        pattern = patterns{pati};
      elseif isa(patterns,'char')
        pattern = makehatch(patterns(pati));
      else
        pattern = patterns;
      end
      pattern = uint8(255*(1-pattern));
      pheight = size(pattern,2);
      pwidth = size(pattern,1);
      ratioh = ceil(bheight/pheight);
      ratiow = ceil(bwidth/pwidth);
      bigpattern = repmat(pattern,[ratioh ratiow]);
      if ratioh*pheight > bheight
        bigpattern(bheight+1:end,:) = [];
      end
      if ratiow*pwidth > bwidth
        bigpattern(:,bwidth+1:end) = [];
      end
      bigpattern = repmat(bigpattern,[1 1 3]);
      color = (bits(:,:,1) == colorval(1)) & ...
              (bits(:,:,2) == colorval(2)) & ...
              (bits(:,:,3) == colorval(3));
      color = repmat(color,[1 1 3]);
      bits(color) = bigpattern(color);
      if ~isempty(colorlist)
        [colors,colori] = nextnonbw(colori,colorlist,bits);
      else
        colors = (bits(:,:,1) ~= bits(:,:,2)) | ...
                 (bits(:,:,1) ~= bits(:,:,3));
      end
      colorind = find(colors);
      pati = (pati + 1);
      if pati > length(patterns)
        pati = 1;
      end
    end
    newfig = figure('units','pixels','visible','off');
    imaxes = axes('parent',newfig,'units','pixels');
    im = image(bits,'parent',imaxes);
    fpos = get(newfig,'position');
    set(newfig,'position',[fpos(1:2) figsize(3) figsize(4)+1]);
    set(imaxes,'position',[0 0 figsize(3) figsize(4)+1],'visible','off');
    set(newfig,'visible','on');
    function [colors,out] = nextnonbw(ind,colorlist,bits)
    out = ind+1;
    colors = [];
    while out <= size(colorlist,1)
      if isequal(colorlist(out,:),[255 255 255]) | ...
            isequal(colorlist(out,:),[0 0 0])
        out = out+1;
      else
        colors = (colorlist(out,1) == bits(:,:,1)) & ...
                 (colorlist(out,2) == bits(:,:,2)) & ...
                 (colorlist(out,3) == bits(:,:,3));
        return
      end
    end
    %而applyhatch函数需要调用下面的函数
    function A = makehatch(hatch)
    %MAKEHATCH Predefined hatch patterns
    %  MAKEHATCH(HATCH) returns a matrix with the hatch pattern for HATCH
    %   according to the following table:
    %      HATCH        pattern
    %     -------      ---------
    %        /          right-slanted lines
    %        \          left-slanted lines
    %        |          vertical lines
    %        -          horizontal lines
    %        +          crossing vertical and horizontal lines
    %        x          criss-crossing lines
    %        .          single dots
    %
    %  See also: APPLYHATCH
    %  By Ben Hinkle, bhinkle@mathworks.com
    %  This code is in the public domain.
    n = 6;
    A=zeros(n);
    switch (hatch)
    case '/'
      A = fliplr(eye(n));
    case '\'
      A = eye(n);
    case '|'
      A(:,1) = 1;
    case '-'
      A(1,:) = 1;
    case '+'
      A(:,1) = 1;
      A(1,:) = 1;
    case 'x'
      A = eye(n) | fliplr(diag(ones(n-1,1),-1));
    case '.'
      A(1:2,1:2)=1;
    otherwise
      error(['Undefined hatch pattern "' hatch '".']);
    end
     
    2.     画柱状填充图
    代码:
    data = [96.3,92.6,71.2;95.7,93.6,83.9;96.8,94.3,78.3;95.8,92.7,80.3];
    bar(data,1);
    axis([0 6 0.0 100]);
    legend('方法','exited','Square');
    set(gca,'XTickLabel',{'Img1','Img2','Img3','Img4'});
    set(gcf,'color','white')
     applyhatch(gcf,'\.x.');
    展开全文
  • matlab 画bar柱状图饼状图阴影填充

    千次阅读 热门讨论 2020-05-25 23:31:00
    这里用到 applyhatch.m文件,而这个文件调用makehatch.m 并且其中一个函数hardcopy在最新版本matlab被删除,里面的hardcopy函数改为print函数(已解决) 现在存在的问题:感觉设置这个符号不太准,还是不建议大家用...

    考虑到此文中的代码有很多朋友需要,我将测试的代码已上传到百度云盘,永久有效。
    里面包含本文所提到的applyhatch.m和makehatch.m,这个版本不是太好用,画出的阴影符号是随机的。因此还包含其他两个版本的脚本文件。

    链接:https://pan.baidu.com/s/1lAAkgWnAKV0MgR_cdPyESQ
    提取码:sawg
    复制这段内容后打开百度网盘手机App,操作更方便哦

    data = [96.3,92.6,71.2;95.7,93.6,83.9;96.8,94.3,78.3;95.8,92.7,80.3];
    bar(data,1);
    axis([0 6 0.0 100]);
    legend('方法','exited','Square');
    set(gca,'XTickLabel',{'Img1','Img2','Img3','Img4'});
    set(gcf,'color','white')
    applyhatch(gcf,'\.x.');
    
    x = [0.14, 0.24, 0.05, 0.47, 0.1];
    pie(x);
    set(gcf,'color','white')
    applyhatch(gcf,'|-+.\');
    

    在这里插入图片描述在这里插入图片描述
    这里用到
    applyhatch.m文件,而这个文件调用makehatch.m
    并且其中一个函数hardcopy在最新版本matlab被删除,里面的hardcopy函数改为print函数(已解决)
    现在存在的问题:感觉设置这个符号不太准,还是不建议大家用这个函数,推荐使用官网上下面的2个函数

    mathwork官网也有自带的
    applyhatch_pluscolor

    applyhatch_plusC
    具体怎么用可以学习
    建议用applyhatch_plusC
    在这里插入图片描述或者使用applyhatch_pluscolor
    在这里插入图片描述
    在这里插入图片描述
    如果用MATLAB做阴影填充图仍然有很多bug,可以选用Python
    在这里推荐2个Python案例
    python案例1
    在这里插入图片描述
    python案例2
    在这里插入图片描述

    展开全文
  • 1. 柱状图 matlab中主要有四个函数用于绘制条形图 bar() %绘制纵向的二维柱状图 barh() %绘制横向的二维柱状图 bar3() %绘制三维纵向条形图 bar3h() 语法格式 bar(y) bar(x,y) bar(…,width) bar...

    第五章 图形绘制(二)

    特殊图形的绘制

    1. 柱状图

    matlab中主要有四个函数用于绘制条形图

    	bar() 	%绘制纵向的二维柱状图
    	barh()	%绘制横向的二维柱状图
    	bar3()	%绘制三维纵向条形图
    	bar3h()
    
    语法格式
    • bar(y)
    • bar(x,y)
    • bar(…,width)
    • bar(…,‘style’)
      ‘style’的取值为’grouped’ or ‘stacked’
      - grouped: 绘制的图形共有 m组,m为矩阵y的行数,每一组有n个条形,n为矩阵的列数,y的每一个元素对应一个条形。
      - stacked: 绘制的图形共有m个条形,每个条形为第m行的n个元素的和,每个条形由n种颜色构成,每种颜色对应一种元素。
    • bar(…,‘bar_color’)

    e.g:

    close all
    clear
    y1 = 100*rand(5,3)  
    subplot(211)
    bar(y1,'grouped');
    subplot(212)
    bar(y1,'stacked','p',1)
    
    

    consequense:
    在这里插入图片描述

    2.饼状图

    饼状图是一种统计图形,通常用于显示每个元素占总体的百分比。在统计学中应用很频繁

    语法格式
    • pie(x)
      • 绘制x的饼状图,每一个元素占一个扇形。
      • 上方 正中开始,逆时针为序
      • 元素的和 超过1:按照百分比绘制
      • 元素的和 不足1:不完整的饼
    • pie(x,explode)
      • 设置相应的扇形偏移
      • 用于突出显示
      • explode为[ 0 1 0 0 1…]与x对应,1对应的扇形会从图形中偏离
    • pie( x, …, labels)
      • 标注图形
      • labels为元素为字符串的单元数组,元素个数与 x一致

    pie3( )和 pie用法一致

    我们来画几个饼~
    e.g

    close all
    clear
    x=[2,4,8,3];explode = [0 1 0 0 ];
    subplot(211)
    pie(x,explode)
    
    subplot(212)
    labels={'教授','副教授','讲师','助教'};
    pie3(x,explode,labels) 
    colormap autumn
    

    consequence
    在这里插入图片描述
    colormap是颜色色系,不仅可以在饼状图中应用,也可以 在后文的三维图形中应用
    可以直接在Matlab中搜索
    在这里插入图片描述拖到比较下面就可以看到了:有很多选择~
    在这里插入图片描述

    3.三维图形的绘制

    常用的函数有:

    • 三位线图 plot3()
    • 三维网线图 mesh()
    • 三维曲面图 surf()

    1,绘制三维曲线plot3()

    用法基本和plot()一样,我们着重学习后文的mesh和surf,这里我们就 看一个例子就好。

    close all
    t = 0:pi/50 : 20*pi;
    subplot(211)
    plot3(sin(t), cos(2*t), sin(t) + cos(t),'-r' )
    subplot(212)
    plot3(sin(2*t),cos(t),2*cos(3*t) , ':b')
    
    

    consequence
    在这里插入图片描述

    2,mesh()

    mesh()可以绘制出某一区间的完整的网格曲面

    • mesh(z)可以 给出矩阵z元素的三位消隐图
      • 网格表面由z定义
      • 用来显示其他方式难以输出的包含大量数据的大型矩阵
    语法格式
    mesh(X,Y,Z);
    • 绘制出一个曲面的网格图
    • 图像的颜色取决于Z(与高度成正比)
      - 如果:
      -X,Y都是向量
      -length(X) = n,length(Y) = m,size(Z) = [m,n]
      则:X(j), Y(i), Z(i,j)是绘制的图形中的各个结
    mesh(Z) , surf(Z);
    • 使用X = 1:n和Y = 1:m,[m,n] = size(Z),高为z
    • 它是一个单值函数,图像的颜色与高度Z成正比
    • Z的元素为z坐标,元素对应的矩阵行和列分别为x坐标和y坐标
    % 建立行向量x,列向量y:
    x = -8 : 0.5 :8;
    y = x' ;
    % 第1条语句x的赋值为定义域,在其上估计函数、建立行向量x;
    % 第2条语句建立列向量y。
    
    % 生成X矩阵:按向量y的长度建立1_矩阵
    X = ones( size(y) ) * x;
    %生成Y矩阵:建立一个33 × 33重复列的Y矩阵,每列均为向量y
    Y = y * ones( size(y) ) ' ;   %产生Y的响应
    %生成三维网格曲面图:
    R = sqrt( X.^2 + Y.^2 ) + eps ; %计算各网格点的半径
    Z = sin(R) ./ R; %计算函数值矩阵Z。
    mesh( Z )
    

    该程序运行后得到三维网格曲面图。
     Figure1

    3,surf()

    surf()函数也是MATLAB中常用的三维绘图函数
    其一般调用格式如下:

    surf(x,y,z);

    • 该函数输入参数的设置与mesh()相同 ;
    • 不同的是mesh()函数绘制的是一网格图 ;
    • 而surf()函数绘制的是着色的三维表面。

    在这里插入图片描述

    4,meshgrid( )

    为3D绘图生成X、Y矩阵。meshgrid()仅限于二维或三维Cartesian空间,meshgrid()更适合在二维或三维Cartesian空间解决问题
    meshgrid()函数的语法如下:

    [X,Y] = meshgrid(x,y);
    • 把向量x和y指定的域转换成矩阵X、Y
    • 用来实现两个变量和三维mesh()、surface()绘图的功能
    • 输出矩阵X的行复制于向量x
    • 输出矩阵Y的列复制于向量y。
    [X,Y] = meshgrid(x)
    • 等同于 [X,Y] = meshgrid(x,x)。
    [X,Y,Z] = meshgrid(x,y,z)
    • 三维矩阵用来实现三个变量和三维立体绘图的功能。

    EXAMPLE:

    % 上例中的前4行用meshgrid()函数代替。
    [X, Y]=meshgrid(-8:0.5:8) 
    R=sqrt(X.^2+Y.^2)+eps;
    Z=sin(R)./R;
    mesh(Z)
    

    RESULT
    在这里插入图片描述

    4,meshc( )

    meshc()&mesh()的调用方式相同,只是该函数在mesh的基础上增加了绘制等高线的功能
    EXAMPLE

    [x,y] = meshgrid ( [-4: 0.5 :4] );
    z = sqrt(x.^2 + y.^2);	
    % sqrt():求算数平方根
    figure
    meshc(z)
    

    RESULT

    在这里插入图片描述

    5,meshz()

    meshz()&mesh()的调用方式也相同,
    该函数增加了z轴铅垂线

    EXAMPLE

    [x,y] = meshgrid( [ -4 : 0.5 : 4] );
    z = sqrt(x.^2 + y.^2 );
    figure
    meshz(z)
    

    在这里插入图片描述

    6,彗星图

    彗星图: 状如彗星的动画图。
    其中:彗星头跟踪数据点的变化
    彗星尾是彗星头后动态画出的拖曳(跟踪整个函数的实线)

    调用:

    comet(y);
    • 显示向量y的彗星图
    comet(x,y);
    • 显示向量y相当于x的彗星图
    comet(x,y,p);
    • 指定彗星拖尾长度为:p*length(y)
    • p默认值为1
    comet3(z), comet3(x,y,z),comet(x,y,z,p)
    • 绘制3D彗星图

    EXAMPLES:

    t = 0: 0.01 :2*pi;
    x = cos(2*t).*(cos(t).^2);
    y = sin(2*t).*(sin(t).^2);
    comet(y)
    figure
    comet(x,y)
    comet(x,y,t)
    

    RESULTS
    comet(y):
    	comet(y)
    comet(x,y)
    comet(x,y)
    comet3(x,y,t)
    comet3(x,y,t)

    展开全文
  • Matplotlib最早是为了可视化癫痫病人的脑皮层电相关的信号而研发,因为在函数的设计上参考了MATLAB,所以叫做Matplotlib. 1. 2D图表Matplotlib中最基础的模块是pyplot。先从最简单的点图和线...
  • MatLab 表达信息的实用函数

    千次阅读 2012-07-23 16:31:07
    MatLab 支持很多种能够有效表达信息的图形:直方图、面积图、饼状图柱状图、枝干图、阶梯图等 (1)直方图: 直方图一般是自动生成X轴和刻度的,也可以根据自己的需要指定标记X轴 MatLab有两个绘制直方图的函数...
  • 二维绘图目录一、折线图:1、plot()、loglog()、semilogx() 与 semilogy()2、plotyy():带有两个y坐标轴的线性坐标系二、直方图:hist()三、柱状图:bar()四、饼状图:pie()五、极坐标图:ploar()六、阶梯图stairs()...
  • matlab note.docx

    2019-12-17 11:07:22
    Histogram (柱状图) 22 Pie charts 饼状图 25 More 3D line plots 30 第五部分:gui 可视化界面 35 第六部分:影像分析 36 常见的图像算法的函数 37 二维图形变形转变 39 交互式选择: 41 第七部分:数学...
  • 绘图(二)3月23日 补二维进阶绘图特殊图形绘制bar() 柱状图area()填充图pie 饼状图errobar 图形加上误差范围hist 直方图stairs 阶梯图stem 火柴杆图contour 等高线绘图fill 多边形填充图feather 羽毛图comet 彗星图...
  • 目录 第一部分:计算器功能的实现... 2 数值显示格式:...... 第二部分:作为程序语言编程使用......自定义函数......第三部分:变量与档案存取......Histogram (柱状图). 22 Pie charts 饼状图... 25 Mo...
  • 12.13 二维特殊图形函数

    千次阅读 2016-12-25 10:58:00
    MATLAB中,除了可以通过plot函数等绘制特殊图形外,还可以通过一些函数绘制柱状图饼状图等特殊图形。常见的特殊二维图形函数 函数名 说明 函数名 说明  area 
  • 常用的有折线图、饼状图、散点图和柱状图,如下: # -*- coding: utf-8 -* import matplotlib.pyplot as plt import numpy as np # 折线图 def plot_test(): x = np.arange(-np.pi, np.pi, 0.1)...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

matlab柱状图饼状图

matlab 订阅