Matlab:柱状图饼状图填充不同条纹

Matlab是强大的工具,是众所周知的画图仿真工具;
Matlab不仅可以画柱状图,饼状图,曲线图,直方图等二维图型;而且可以画三维或多维图。
这里主要介绍在柱状图和饼状图内填充条纹,由于Matlab画图工具箱内无填充工具,这里主要通过命令来实现。

操作方法

  • 01

    导入几组数据,通过命令得到柱状图或者饼状图。 示例:以导入txt文件格式为例;

  • 02

    弹出柱状图界面和饼状图界面。 可见,柱状图和饼状图为彩色图片,有时我们不要彩色图片,要黑白图像。 对黑白图像如何区分不同类别的数据,就需要往图像里面填充不同的条纹。

  • 03

    打开编辑—图形属性, 更改自己所需要的字体,坐标轴范围,图例,线宽等; 也可用命令修改,如:

  • 04

    下面就是重点:如何把上述图像转换成黑白图像,并填充不同条纹。 首先,创建名为“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

  • 05

    柱状填充图和饼状填充图,画图命令如下: a=importdata('xxx.txt'); >> b=importdata('xxx.txt'); >> c=importdata('xxx.txt'); >> d=[a,b,c]; >> bar(d); 警告: MATLAB 已通过改用 OpenGL 软件禁用了某些高级的图形渲染功能。欲了解有关详细信息,请点击此处。 >> figure(2) >> pie(d); >> axis([0 11 0.0 22]); >> legend('方法1','方法2','方法3'); >> set(gcf,'color','white'); >> applyhatch(gcf,'x+\.');

  • 06

    结果:不同条纹填充结果 柱状图和饼状图 如图所示:

(0)

相关推荐

  • 电脑excel饼状图的填充怎么更改

    excel是我们常用的数据处理工具之一,接下来小编就教大家怎样更改饼状图的填充.具体如下:1. 首先打开电脑进入到桌面,然后找到想要更改的excel图表点击打开.2. 进入到excel界面之后,我们点 ...

  • 怎么用excel做数据分析柱状图、曲线图、饼状图

    excel图表功能非常强大,可以做出各种数据分析图,比如柱状图.曲线图.折线图.饼状图等.具体怎么做呢 操作方法 01 首先要建立规范的excel数据,如下图,中间为数据,左侧和顶部为科目,数据与左侧 ...

  • WPS技巧:[1]如何制作饼状图

    WPS是一种常用的办公软件,在统计一些数据时,经常要对一些数据进行汇总,如果能用饼状图来表示,那么将会使得数据更加直观,下面我们就来看看用Wps如何来制作饼状图. 饼图制作步骤: 01 打开WPS文字 ...

  • Excel制作半圆饼状图的方法

    今天小编就教大家制作半圆饼状图,有需要的朋友不要错过学习的机会咯! 下面,开始制作吧! ①首先准备源数据,在C2单元格输入公式: =B2/SUM($B$2:$B$7) ②回车,得到的结果为小数,并不是 ...

  • Excel教程 制作半圆饼状图的方法

    今天小编就教大家制作半圆饼状图,有需要的朋友不要错过学习的机会咯! 下面,开始制作吧! ①首先准备源数据,在C2单元格输入公式: =B2/SUM($B$2:$B$7) ②回车,得到的结果为小数,并不是 ...

  • Excel如何设置饼状图格式

    Excel是大家常用的数据处理软件,大家通常用来处理繁杂的数据.当然,Excel还具有强大的图表功能,我们可以将数据设置为图表的格式更加明显,所以今天小编就给大家带来如何设置饼状图格式教程. 操作方法 ...

  • excel如何做饼状图

    excel有多种图表功能,而 饼状图则是其中一种.饼状图常用于市场份额分析,占有率分析等场合,能非常直观的表达出每一块区域的比重大小.今天 书生就为大家继续带来excel方面的知识. 如何做饼状图 其 ...

  • 饼状图怎么做

    我们在用EXCLE时候,由于便于统计的原因我们有时需要利用图形来显示你要说明的数字,这样更加的形象直观的观察出你要表达的内容,一般分为柱状图.饼状图.面积图.折线图等,下面就来说说如何制作饼状图 操作 ...

  • wps表格中如何插入饼状图

    在wps表格中插入饼状图的方法 第一步,打开你的WPS,在编辑页面完成相应数据的前期录入. 第二,鼠标点击选中你要编辑的单元格区域. 第三,在菜单栏上点击选择插入--图标. 第四,然后点击选择饼图,在 ...