matlab plot errorbar,如何为MATLAB errorbar plot的点和垂直线设置不同的图例?

这建立在

Jens Boldsen’s answer之上,它添加了以下内容:

>可以旋转表示图例中错误栏的线条使其垂直,或保持默认的水平方向;

>该行的末尾用短线“关闭”.

该方法非常通用,因为它支持:

>任意颜色,线型和标记作为错误栏的参数.请注意,实际条形图始终绘制为实线,没有标记(使用指定的颜色).这是根据errorbar行为.

>新创建的短线随图例移动.

>这些线的宽度是可配置的参数.此外,errobar的长度是垂直情况下的参数.两者都以相对于图例的标准化单位定义.

根据Matlab版本,该方法略有不同,因为R2014b中引入的图形对象发生了变化.此外,图例中的errobar线可以是水平的或垂直的.

所以有四种情况.

案例I:Pre-R2014b,图例中的水平误差条

绘制数据和图例后,代码将遵循以下步骤:

>获得传奇的孩子们

>在这些孩子中找到合适的路线

>获取其x和y坐标

>利用这些坐标,在每一端创建两条短线.将这些线条作为传奇的子项,以便它们随之移动.

该代码已在Matlab R2010b中测试过.

%// Define graph aspect

color_spec = 'r'; %// color of data and bars.

linestyle_spec = '--'; %// linestyle for data. The bars are always solid

marker_spec = 'o'; %// marker for data

wid = .12; %// width of bar in legend. Normalized units

%// Plot errobar

h_er = errorbar([1 2], [2 3], [0.1 0.2], [color_spec linestyle_spec marker_spec]);

%// Add dummy line for legend (as per Jens Boldsen) and create legend

hold on;

plot(0,0,color_spec); %// linestyle is always solid with no marker

h_le = legend('Mean','Standard deviation','Location','north');

%// Add short lines at each end of line in the legend

c_le = get(h_le, 'Children'); %// step 1

h_li = findobj(c_le, 'linestyle','-', 'color',color_spec, 'marker','none'); %// step 2

h_li = h_li(1); %// in case there's more than one

li_x = get(h_li,'XData'); %// step 3

li_y = get(h_li,'YData');

line(li_x([1 1]), li_y+wid*[-.5 .5], 'parent',h_le, 'color',color_spec); %// step 4

line(li_x([2 2]), li_y+wid*[-.5 .5], 'parent',h_le, 'color',color_spec);

案例II:R2014b,图例中的水平误差条

在Matlab R2014b中,图例不再是轴对象,也没有子对象.因此,必须针对案例I修改步骤1和2:

>创建图例时获取图例的图标

>在这些图标中查找相应的行

>获取其x和y坐标

>利用这些坐标,在每一端创建两条短线.使这些线与初始线共享父线,以便它们与图例一起移动.

此外,此Matlab版本中的新语法有助于简化代码.

%// Define graph aspect

color_spec = 'r'; %// color of data and bars.

linestyle_spec = '--'; %// linestyle for data. The bars are always solid

marker_spec = 'o'; %// marker for data

wid = .12; %// width of bar in legend. Normalized units

%// Plot errobar

h_er = errorbar([1 2], [2 3], [0.1 0.2], [color_spec linestyle_spec marker_spec]);

%// Add dummy line for legend (as per Jens Boldsen)

hold on;

plot(0,0,color_spec); %// linestyle is always solid with no marker

%// Create legend and add short lines at each end of line in the legend

[~, icons] = legend('Mean','Standard deviation','Location','north'); %// 1

li = findobj(icons, 'type','line', 'linestyle','-'); %// 2

li = li(1); %// in case there's more than one

li_x = li.XData; %// 3

li_y = li.YData;

line(li_x([1 1]), li_y+wid*[-.5 .5], 'parent',li.Parent, 'color',color_spec); %// 4

line(li_x([2 2]), li_y+wid*[-.5 .5], 'parent',li.Parent, 'color',color_spec);

案例III:Pre-R2014b,图例中的垂直错误栏

这与情况I类似,但需要摆弄线条的x和y坐标.此外,引入了一个新参数来控制图例中错误栏的长度.

%// Define graph aspect

color_spec = 'r'; %// color of data and bars.

linestyle_spec = '--'; %// linestyle for data. The bars are always solid

marker_spec = 'o'; %// marker for data

wid = .04; %// width of bar in legend. Normalized units

len = .45; %// length of main bar in legend. Normalized units

%// Plot errobar

h_er = errorbar([1 2], [2 3], [0.1 0.2], [color_spec linestyle_spec marker_spec]);

%// Add dummy line for legend (as per Jens Boldsen) and create legend

hold on;

plot(0,0,color_spec); %// linestyle is always solid with no marker

h_le = legend('Mean','Standard deviation','Location','north');

%// Add short lines at each end of line in the legend

c_le = get(h_le, 'Children');

h_li = findobj(c_le, 'linestyle','-', 'color',color_spec, 'marker','none');

h_li = h_li(1); %// in case there's more than one

set(h_li,'XData', repmat(mean(get(h_li,'XData')),1,2));

set(h_li,'YData', mean(get(h_li,'YData'))+len*[-.5 .5]);

li_x = get(h_li,'XData');

li_y = get(h_li,'YData');

line(li_x+wid*[-.5 .5], li_y([1 1]), 'parent',h_le, 'color',color_spec);

line(li_x+wid*[-.5 .5], li_y([2 2]), 'parent',h_le, 'color',color_spec);

案例IV:R2014b,图例中的垂直错误栏

同样,这与案例II类似,但有一些摆弄线的坐标.

%// Define graph aspect

color_spec = 'r'; %// color of data and bars.

linestyle_spec = '--'; %// linestyle for data. The bars are always solid

marker_spec = 'o'; %// marker for data

wid = .05; %// width of small bars in legend. Normalized units

len = .45; %// length of main bar in legend. Normalized units

%// Plot errobar

h_er = errorbar([1 2], [2 3], [0.1 0.2], [color_spec linestyle_spec marker_spec]);

%// Add dummy line for legend (as per Jens Boldsen)

hold on;

plot(0,0,color_spec); %// linestyle is always solid with no marker

%// Create legend, modify line and add short lines

[~, icons] = legend('Mean','Standard deviation','Location','north');

li = findobj(icons, 'type','line', 'linestyle','-');

li = li(1); %// in case there's more than one

li.XData = repmat(mean(li.XData),1,2);

li.YData = mean(li.YData)+len*[-.5 .5];

li_x = li.XData;

li_y = li.YData;

line(li_x+wid*[-.5 .5], li_y([1 1]), 'parent',li.Parent, 'color',color_spec);

line(li_x+wid*[-.5 .5], li_y([2 2]), 'parent',li.Parent, 'color',color_spec);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 / C++基础面试知识大集合

点击蓝字关注我们相对而言,C语言和C相关的面试题比较少见,没有Java方向写的人那么多,这是一篇 C 语言与 C面试知识点总结的文章,个人感觉非常难得,希望能对大家有所帮助。const作用修饰变量,说明该变量不可…

input发送a.jax_Java REST JAX-RS 2.0 –如何处理日期,时间和时间戳记数据类型

input发送a.jax无论是X-Form-Urlencoded还是JSON HTTP发布到REST资源端点,对于与日期或时间相关的数据都没有特定的“数据类型”。 大多数开发人员会将这些数据发布为“字符串”,或者只是将它们转换为Unix时间戳值(例如1435061152&#xff09…

php中is_int用法,php – is_int()和ctype_digit()之间有区别吗?

如果参数是整数类型,is_int()返回true,ctype_digit()采用字符串参数,如果字符串中的所有字符都是数字,则返回true。例:┌──────────┬───────────┬────────────────┐│ │ is_…

jooq sql_jOOQ星期二:Vlad Mihalcea深入了解SQL和Hibernate

jooq sql欢迎来到jOOQ Tuesdays系列。 在本系列文章中,我们每隔一个月的第三个星期二发布一篇文章,从jOOQ的角度采访我们发现该行业令人兴奋的人。 这包括从事SQL,Java,开放源代码以及各种其他相关主题的人员。 我们很高兴在第三…

C语言灵魂拷问:++i 为比 i++效率高?

点击蓝字关注我们相信很多人遇到过这样的问题:printf("%d,%d",i,i);也纠结过这个问题,到底答案是什么。确没有一个参考的资料。唯一知道的是,几乎所有C语言教材都这么讲:i就是先使用i的值再使i自身加一,而i则…

HibernateNONSTRICT_READ_WRITE CacheConcurrencyStrategy如何工作

介绍 在我以前的文章中 ,我介绍了READ_ONLY CacheConcurrencyStrategy ,这是不可变实体图的显而易见的选择。 当高速缓存的数据可变时,我们需要使用读写高速缓存策略,本文将介绍NONSTRICT_READ_WRITE二级高速缓存的工作方式。 内…

502无法解析服务器标头_编写下载服务器。 第三部分:标头:内容长度和范围...

502无法解析服务器标头这次,我们将探索更多HTTP请求和响应标头,以改善下载服务器的实现: Content-length和Range 。 前者表示下载量很大,后者允许部分下载文件,或者从我们开始的地方失败后继续下载。 Content-length响…

支付宝pc支付php,laravel框架下的pc支付宝支付接入

Time: 14:22*/return [//pc配置pcconfig>[partner >2088302186611, //这里是你在成功申请支付宝接口后获取到的PID;key >sxevk9h1vekjlx4y12arl6pryrz111, //这里是你在成功申请支付宝接口后获取到的Keyseller_id >208830211, //就是partnersign_type &…

最全,面中率最高的C++经典面试题分享!

点击蓝字关注我们1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C/C语言的标准库函数,new/delete是C的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象…

mysql不同版本会覆盖吗,[mysql不同版本数据库同步]mysql数据库主从同步,master和slave上的mysql必须版本一样吗,如果不一样会有什么结果?...

在线QQ客服:1922638专业的SQL Server、MySQL数据库同步软件497950890Slave_SQL_Running: No mysql同步故障解决如果数据不同步可以尝试该资料mysql> show slave status\GSlave_IO_Running: YesSlave_SQL_Running: NoLast_Errno: 1062….Seconds_Behind_Master:NU…

不可变集合相比可变集合_简单的基准测试:不可变集合VS持久集合

不可变集合相比可变集合通常,您需要向集合中添加新元素。 因为您是一个优秀而谨慎的开发人员,所以您希望尽可能保持不变。 因此,向不可变集合中添加新元素将意味着您必须创建一个新的不可变集合,其中包含原始集合的所有元素以及新…

C++ 面试被问到的“左值引用和右值引用”

点击蓝字关注我们1.左值和右值在C11中可以取地址的、有名字的就是左值,反之,不能取地址的、没有名字的就是右值(将亡值或纯右值)。举个例子,int a bc, a 就是左值,其有变量名为a,通过&a可以…

php如何解释xml,PHP – 如何解析这个xml?

我正在尝试解析下面的XML,以便最终得到一个看起来像样本的数组……我很难弄清楚如何获取标签内部的属性以输出我想要的方式它…XML我想要的数组::注意添加的数组元素Array[cust] > Array[rid] > 999999[member_id] > 12345[lname] > Doe[fname] > John[address]…

jug java_架构大型企业Java项目–我的虚拟JUG会话

jug java昨天我很荣幸被邀请参加虚拟JUG 。 这是一个很大的荣誉,其原因有很多:首先,我是vJUG董事会的一员,其次,因为这是我第二次向这个对Java感兴趣的伟大团队做演讲。 受到邀请总是很高兴。 架构大型企业Java项目 过…

初学者宝典:C语言入门基础知识大全

点击蓝字关注我们01C语言程序的结构认识用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使小伙伴对c语言有个初步认识。例1:计算两个整数之和的c程序:#include main() {int a,b,sum; a20; /*定义变量a,b&a…

php怎么使用多个数据库,怎么在php项目中使用CI对多个数据库进行操作

怎么在php项目中使用CI对多个数据库进行操作发布时间:2020-12-19 16:57:21来源:亿速云阅读:87作者:Leah今天就跟大家聊聊有关怎么在php项目中使用CI对多个数据库进行操作,可能很多人都不太了解,为了让大家更…

qt如何捕获应用程序输出_企业应用程序中需要捕获的5大Java性能指标

qt如何捕获应用程序输出有兴趣了解如何使用AppDynamics捕获这些Java性能指标吗? 立即开始免费试用 ! 前几篇文章介绍了应用程序性能管理(APM),并指出了有效实施APM战略的挑战。 本文通过回顾五个顶级性能指标来构建这…

C语言入门笔记,推荐收藏!

点击蓝字关注我们C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等。C语言也是其它众多高级语言的鼻祖语言,所以说学习C语言是进…

php.c drcom,校园网绕过Drcom安装自动登录程序到路由器

简单记录一下,怎么在路由器上安装drcom脚本,实现自动登陆,一个路由器,全寝室都可以使用的方法。安装固件:我这里使用的是newifi mini型号的路由器下载后,插拔一次路由器,按下路由器上的reset按钮…

jax-rs jax-ws_如何以大数据的JAX-RS响应的形式将JPA结果流化/序列化

jax-rs jax-ws有时,有必要通过JPA检索大型数据集(例如,超过1,000,000条记录),并将它们填充到java.util.List的单个实例中是有风险的(内存障碍)。 因此,这是一个快速的解决方案&#…