居然又攒出了一期特殊绘图小合集文章,本来以为要攒很久的,本系列主要拿出来一些简单的,单独拿来写篇幅会很短的绘图小技巧做个合集,本期代码为了绘制好看大部分情况使用了以下这段简单小代码进行修饰:

function defualtAxes
ax=gca;hold on;box on
ax.XGrid='on';
ax.YGrid='on';
ax.XMinorTick='on';
ax.YMinorTick='on';
ax.LineWidth=.8;
ax.GridLineStyle='-.';
ax.FontName='Cambria';
ax.FontSize=12;
end

1 连贯填充堆叠柱状图

比如写了如下代码绘制了堆叠柱状图:

X=randi([0,5],[6,4]);
barHdl=bar(X,'stacked','BarWidth',.4);

把代码改成这样就能绘制带连贯填充的柱状图:

X=randi([0,5],[6,4]);
% X=randi([-2,5],[6,4]);
barHdl=bar(X,'stacked','BarWidth',.4);% 以下是生成连接的部分
hold on;axis tight
yEndPoints=reshape([barHdl.YEndPoints]',length(barHdl(1).YData),[])';
zeros(1,length(barHdl(1).YData));
yEndPoints=[zeros(1,length(barHdl(1).YData));yEndPoints];
barWidth=barHdl(1).BarWidth;
for i=1:length(barHdl)for j=1:length(barHdl(1).YData)-1y1=min(yEndPoints(i,j),yEndPoints(i+1,j));y2=max(yEndPoints(i,j),yEndPoints(i+1,j));if y1*y2<0ty=yEndPoints(find(yEndPoints(i+1,j)*yEndPoints(1:i,j)>=0,1,'last'),j);y1=min(ty,yEndPoints(i+1,j));y2=max(ty,yEndPoints(i+1,j));endy3=min(yEndPoints(i,j+1),yEndPoints(i+1,j+1));y4=max(yEndPoints(i,j+1),yEndPoints(i+1,j+1));if y3*y4<0ty=yEndPoints(find(yEndPoints(i+1,j+1)*yEndPoints(1:i,j+1)>=0,1,'last'),j+1);y3=min(ty,yEndPoints(i+1,j+1));y4=max(ty,yEndPoints(i+1,j+1));endfill([j+.5.*barWidth,j+1-.5.*barWidth,j+1-.5.*barWidth,j+.5.*barWidth],...[y1,y3,y4,y2],barHdl(i).FaceColor,'FaceAlpha',.4,'EdgeColor','none');end
end

本来不需要写这么长代码,但为了应对有负数的情况才写了这么长,比如数据有负数会是这样:

X=randi([-2,5],[6,4]);
barHdl=bar(X,'stacked','BarWidth',.4);


2 y轴分段填充折线图

假设画了这样的图:

X=0:.01:pi*5;
Y=sin(X)+X./15;hold on
plot(X,Y,'LineWidth',2)
Uy=1.2;Ly=0;% Uy:上面的辅助线y值,Ly:下面的辅助线y值
yline(Uy,'LineWidth',1,'LineStyle','--')
yline(Ly,'LineWidth',1,'LineStyle','--')

填充颜色:

fillColor=[114,146,184]./255;% 填充颜色
UY=Y;UY(UY<Uy)=Uy;
fill(X,UY,fillColor,'EdgeColor','none','FaceAlpha',.9)
LY=Y;LY(LY>Ly)=Ly;
fill(X,LY,fillColor,'EdgeColor','none','FaceAlpha',.9)


3 不同colormap

同一坐标区域不同colormap,首先假如化了俩曲面:

[X,Y,Z]=peaks(40);
hold on;axis tight;grid on;view(3)
surfHdl1=surf(X,Y,Z);
surfHdl2=surf(X,Y,Z+10);

设置配色:

CM1=winter;
CM2=pink;
ZList1=linspace(min(min(surfHdl1.ZData)),max(max(surfHdl1.ZData)),size(CM1,1));
ZList2=linspace(min(min(surfHdl2.ZData)),max(max(surfHdl2.ZData)),size(CM2,1));
CMap1=cat(3,interp1(ZList1,CM1(:,1),surfHdl1.ZData),interp1(ZList1,CM1(:,2),surfHdl1.ZData),interp1(ZList1,CM1(:,3),surfHdl1.ZData));
CMap2=cat(3,interp1(ZList2,CM2(:,1),surfHdl2.ZData),interp1(ZList2,CM2(:,2),surfHdl2.ZData),interp1(ZList2,CM2(:,3),surfHdl2.ZData));
surfHdl1.CData=CMap1;
surfHdl2.CData=CMap2;


4 柱状图绘制误差棒

柱状图绘制误差棒很简单:

Data=randi([20,35],[5,1]);
err=rand([5,1]).*5;hold on
barHdl=bar(Data,'BarWidth',.4);
% 绘制误差棒
errorbar(barHdl.XEndPoints,barHdl.YEndPoints,err,...'LineStyle','none','Color','k','LineWidth',.8)

多组的就是加个循环:

Data=randi([20,35],[5,2]);
err=rand([5,2]).*5;hold on
barHdl=bar(Data);
% 绘制误差棒
for i=1:size(err,2)errorbar(barHdl(i).XEndPoints,Data(:,i),err(:,i),...'LineStyle','none','Color','k','LineWidth',.8)
end

Data=randi([20,35],[5,2]);
err=rand([5,2]).*5;hold on
barHdl=bar(Data,'stacked','BarWidth',.4);
% 绘制误差棒
for i=1:size(err,2)errorbar(barHdl(i).XEndPoints,barHdl(i).YEndPoints,err(:,i),...'LineStyle','none','Color','k','LineWidth',.8)
end


5 每个柱状图不同颜色

X=randi([2,15],[1,25])+rand([1,25]);
barHdl=bar(X); % 与数据等长数量的颜色
ColorList=[0.2235    0.2314    0.47450.2235    0.2314    0.47450.3216    0.3294    0.63920.4196    0.4314    0.81180.6118    0.6196    0.87060.3882    0.4745    0.22350.5088    0.5951    0.29710.5490    0.6353    0.32160.7098    0.8118    0.41960.8078    0.8588    0.61180.5490    0.4275    0.19220.7412    0.6196    0.22350.8235    0.6745    0.27250.9059    0.7294    0.32160.9059    0.7961    0.58040.5176    0.2353    0.22350.6784    0.2863    0.29020.8392    0.3804    0.41960.8559    0.4324    0.46760.9059    0.5882    0.61180.4824    0.2549    0.45100.6471    0.3176    0.58040.8078    0.4275    0.74120.8706    0.6196    0.83920.8706    0.6196    0.8392];
barHdl.FaceColor='flat';
barHdl.CData=ColorList;


6 金字塔图

X1=[2,2.3,3.7,4.1,5.1,6,7,8];
X2=[1,1.7,1.9,3.8,4.7,5,7,8];
Label1={'A1','A2','A3','A4','A5','A6','A7','A8'};
Label2={'B1','B2','B3','B4','B5','B6','B7','B8'};fig=figure();
ax1=axes('Parent',fig);
% defualtAxes()
hold on;axis tight;box off
ax1.Position=[.1,.08,1/2-.1,.9];
ax1.YDir='reverse';
ax1.XDir='reverse';
ax1.YTickLabel=Label1;
barh(ax1,X1,'FaceColor',[0,.447,.741])ax2=axes('Parent',fig);hold on;axis tight
% defualtAxes()
hold on;axis tight;box off
ax2.Position=[1/2,.08,1/2-.1,.9];
ax2.YDir='reverse';
ax2.YAxisLocation='right';
ax2.YTickLabel=Label2;
barh(ax2,X2,'FaceColor',[.85,.325,.098])


MATLAB | 特殊绘图小合集(二) | 金字塔图、类桑基图、y轴分段填充折线图相关推荐

  1. 【python科研绘图】双y轴并列柱状图+折线图+数据表结合,并封装图形绘制函数

    双y轴并列柱状图+折线图+数据表结合 1. 论文原图 2 数据准备 3 代码实现步骤拆解 3.1 导入第三方库 3.2 数据赋值 3.3 数据绘图 4 函数封装 手动反爬虫: 原博地址 https:/ ...

  2. 图像超分算法小合集二:FSRCNN、DRCN、RDN、EDSR

    目录 FSRCNN DRCN RDN EDSR 文章: FSRCNN : Accelerating the Super-Resolution Convolutional Neural Network ...

  3. 2018最新大数据分析/数学建模-MATLAB多套视频教程合集+200多本MATLAB技术文档+电子书

    ===============课程目录=============== 视频教程 │  ├<MATLAB.GUI第2版>配套光盘.rar │  ├<Matlab GUI 初学者视频教学 ...

  4. matlab ifft取实部,[合集] matlab中IFFT的问题

    发信人: goodspeed (LIP & BCI & LT-WMN), 信区: Signal 标  题: [合集] matlab中IFFT的问题 发信站: BBS 水木清华站 (Sa ...

  5. Github四足机械狗资源小合集

    本文转自:[机械狗工坊-作者snow1107],侵删 一.国内 https://github.com/golaced/OLDX-FC_QUADRUPED_QUADROTOR https://githu ...

  6. matlab的求实部,[合集]请教matlab中复数除法如何求实部虚

    发信人: Casper (A WAVELET OF ZOMBIES IS APPROACHING!), 信区: MathTools 标  题: [合集]请教matlab中复数除法如何求实部虚部 发信站 ...

  7. Easyx项目小合集

    这好像是很早之前,在官网找的项目 目录 项目名称: 迷宫 项目名称: 打雷风景 项目名称: 烟花 项目名称: 迷宫 #include <graphics.h> #include <t ...

  8. Java多线程知识小抄集(二)

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  9. python机器人算法_机器人实用Python代码合集,5大类算法助你搞定自主导航

    迷之栗 发自 凹非寺 量子位 出品 | 公众号 QbitAI "有代码么?" 每每写到某实验室的机器人,解锁了厉害的操作,评论区很容易生出这样的问题. 然而,答案常常略带伤感,不好 ...

最新文章

  1. java 判断ocx是否存在_OCX控件的注册卸载,以及判断是否注册
  2. PanoNet3D:一个基于激光雷达点云语义和几何理解的3D目标检测方法
  3. SAP零售行业解决方案初阶 4 – 维护品类
  4. 中兴智能视觉大数据报:要注意,人工智能将衍生更多工作机会
  5. .net c# 正则表达式 平衡组/递归匹配
  6. 让产品自己召唤人——马化腾
  7. 把工程部署在tomcat的root路径下
  8. Spring boot的put请求
  9. 限速会自动恢复吗_骨折会自己好吗?骨折后怎样做恢复快?
  10. python 输入10个整数_2019-07-18 python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明。...
  11. python画各种统计图的特点_Python 分词并画出词频统计图 | 睿鑫网络
  12. oracle dw报告,讲解Oracle数据库的全文索引设置步骤
  13. 张掖计算机职称考试,甘肃省张掖市2018年3月计算机等级考试公告
  14. 禅道的安装与简单使用
  15. oracle与sqlserver比较
  16. 图卷积网络GCN理解
  17. Ubuntu阿里源镜像
  18. Wolfram|Alpha搜索引擎
  19. lzg_ad:XPE数据库组件
  20. 当你写爬虫抓不到APP请求包的时候该怎么办?【高级篇-混淆导致通用Hook工具失效】

热门文章

  1. wlk修复最好的服务器,cwlk中那些最容易获得的服务器第一成就
  2. 输入框输入手机号,中间插入空格格式化,且限制11位
  3. matlab函数_连通区域 bwareaopen bwarea
  4. 电缆/管道/故障定位高密度聚乙烯盾型电子标识器技术特征与功能
  5. Java项目——TomJerry Jump Game跑酷游戏
  6. 历次周赛、专场竞赛、春秋赛题目场次及对应具体题目题号+链接汇总
  7. 跨局域网远程桌面连接设置步骤
  8. unity自动设置Assetbundle包名
  9. 在沈阳做这么一个大型交易系统实属不易
  10. UG编程基本操作及工艺介绍分析