文件交换
124下载
更新2001年11月14日
查看许可协议
Plotyyy在Plotyy身上构建,包括第三y轴。它还提供了一种简单的方法,可以立即标记所有三个Y轴。
丹尼斯·吉尔伯特(2021)。浮子(//www.tatmou.com/matlabcentral/fileexchange/1017-plotyyy), MATLAB中央文件交换。检索2021年6月28日.
2021年6月16日
2011年4月16日
2021年3月10日
2020年11月30日
2020年8月19日
我有一些数字的展示位置。它始终偏离屏幕移动,除非我定义集合(GCF,“颜色”,“W”,“位置”,[0,0,1200,800]);- 零很重要!如果没有x,y = 0图“消失”。使用零,它只需填充整个屏幕(我的案例中的两个屏幕)。
另外,第二个数据序列只显示一半,两个数据点之间的线被切断……
我使用Matlab R2020a
2020年7月14日
大家好,下面的问题我需要帮助。我使用了脚本:%% auswertung 3-fach;
扩展plotyy以包含第三个y轴%%语法:[AX,HLines] = Plotyyy(X1,Y1,X2,Y2,X3,Y3,Ylabels)%%输入:x1,y1是第一个轴的xdata和ydata% x2,y2是第二个轴的xdata和ydata%x3,y3是第三轴线的xdata和ydata%ylabels是一个包含Ylabel字符串的3x1单元阵列%包含轴的句柄的双数组ax - 3x1% hlines -包含行句柄的3x1双数组%%的例子:
x = s9780gesamt.date;
y1 = s9780gesamt.daily_median_weightavg;
y2 = S9780Gesamt.daily_mileageAVG;
y3 = s9780gesamt.daily_mileagemedian;
ylabels {1} ='daily_median_weightavg';ylabels {2} ='daily_mileageavg';ylabels {3} ='fuel_consumption_per_100_kmmedian';
[ax, hlines] = plotyyy(x,y1,x,y2,x,y3,ylabels);
并更新函数:
功能[AX,HLINES] = Plotyyy(X1,Y1,X2,Y2,X3,Y3,YLabels)扩展plotyy以包含第三个y轴%%语法:[AX,HLines] = Plotyyy(X1,Y1,X2,Y2,X3,Y3,Ylabels)%%输入:x1,y1是第一个轴的xdata和ydata% x2,y2是第二个轴的xdata和ydata%x3,y3是第三轴线的xdata和ydata%ylabels是一个包含Ylabel字符串的3x1单元阵列%包含轴的句柄的双数组ax - 3x1% hlines -包含行句柄的3x1双数组%%的例子:% x = 0:10;%y1 = x;Y2 = x。^ 2;y3 = x。^ 3;%ylabels {1} ='第一个y-label';% ylabels{2} = '第二y-label ';%ylabels {3} ='第三y-label';% (ax,线)= plotyyy (x, y₁,x, y2, x, y3, ylabels);%图例(hlines, 'y = x','y = x^2','y = x^3',2)%% m-files要求:没有
%作者:丹尼斯吉尔伯特,博士,物理海洋学%Maurice Lamontagne Institute%。加拿大渔业部和海洋局%电子邮件:gilbertd@dfo-mpo.gc.ca%网络:http://www.qc.dfo-mpo.gc.ca/iml/% 2000年4月;最后修改:14 - 11月- 2001
如果nargin == 6%使用空字符串的ylabelsylabels {1} = ';ylabels {2} = ';ylabels {3} = ';elseif nargin> 7error('太多输入参数')Elseif nargin < 6错误(“不足输入参数”)结束
图(“单位”,“归一化”,…'defaultaxesxminortick','上','defaultaxesyminortick','开');
%用plotyy绘制前两行(ax,线(1)、线(2)]= plotyy (x1, y1, x2, y2);cfig = get(gcf,'color');Pos = [0.1 0.1 0.7 0.8];抵消= pos (3) / 5.5;
%减少plotyy生成的两个轴的宽度Pos (3) = Pos (3) - offset/2;集(ax,“位置”,pos);
%确定第三轴的位置POS3 = [POS(1)POS(2)POS(3)+偏移POS(4)];
xmin = datenum(' 07 - 1月- 2019就是');Xmax = Datenum('17 -May-2020 00:00:00');
确定第三个轴的适当x极限limx1 = [xmin xmax];limx3 = [xmin xmin + 1.2 *(xmax-xmin)];% %错误修复14 11月-2001:1.2比例因子在上面的线%%是由Mariano Garcia(Borgwarner Morse Tec Inc)提供的
斧头(3)=轴('位置',pos3,'box','关闭',...“颜色”、“没有”、“XColor’,‘k’,‘YColor’,‘r’,……“xtick”,[],xlim, limx3,‘yaxislocation’,‘正确的’);
线(3)=线(x3, y3,‘颜色’,‘r’,‘父’,ax (3));limy3 =得到(ax(3),“YLim”);
%隐藏x轴上不需要的部分%在第二个和第三个轴的末端之间线([datestr (limx1 (2) datestr (limx3 (2))], [limy3 (1) limy3(1)),…cfig‘颜色’,‘父’,ax(3),“剪裁”,“关闭”);轴(斧头(2))
%标记所有三个y轴集(get (ax(1),“ylabel”),“字符串”,ylabels {1})集(get (ax(2),“ylabel”),“字符串”,ylabels {2})集(get (ax(3),“ylabel”),“字符串”,ylabels {3})
我的功能基于Excel电子表格。该曲线包含三个图形,其中一个图形有偏移量。现在我不知道故障在哪里以及如何在没有偏移的情况下创建三个轴。
2020年7月6
@iris van der veen&其他为了使所有三个Y轴相同的X轴限制,必须调整第三个。基本上,拿起你的最小XLIM并加入你的XLIM扩展的1.2倍(在数学中,最大和最小值之间的差异)。例如,如果您的xlimits为3到10,则xmin为3,xmax为10.对于第3个X轴,您的Xmax = 3 + 1.2 *(10 - 3)。我的数据处于DateTime格式,必须转换为数据项,但我的代码如下:
%将所需的X限制转换为数据xmin = datenum (01 - 11 - 2016);xmax = datenum (01 - 1 - 2018);%添加第三个x轴的偏移值,由于原始代码的偏移%允许第3 y轴显示在第二y轴的右侧xmax3 = xmin + 1.2 *(xmax-xmin);%设置X轴限制集(ax(1),“xlim”,[xmin xmax]);集(ax(2),“xlim”,[xmin xmax]);SET(AX(3),'XLIM',[Xmin Xmax3]);
2020年5月18日
我忘记在我以前的帖子中提到参数“fac”可以是任何合理的数字(它不一定是1.3)。略有变化之后:
Pos = [0.14 0.18 0.55 0.75];集(ax,“位置”,pos);
fac = 1.3;pos =[pos(1) pos(2) fac*pos(3) pos(4)];
limx1 =得到(ax(1),“xlim”);limx3 = [limx1 (1) limx1 (1) + fac * (limx1 (2) -limx1 (1)));
2020年5月15
4月11日4月11日
有人能解释一下第48行1/5的偏移乘因子是如何确定的吗?我想知道如何确保第三个轴与另外两个轴完全对齐。
2020年1月31日
谢谢你的代码。但是谁能帮我打印这个数字??
2019年10月11日
良好的功能。我做了一些修改来满足我的要求。- 将第3块线/轴的颜色匹配,以匹配MATLAB颜色方案。-删除开头的nargin语句,替换为用于标识空标签的exist语句。-添加一个数据标记输入,使xaxis被标记为数据标记字符串。
请参见下面的代码。函数[ax,hlines] = plotyyy(x1,y1,x2,y2,x3,y3,ylabels,dateticks)扩展plotyy以包含第三个y轴%%语法:[AX,HLines] = Plotyyy(X1,Y1,X2,Y2,X3,Y3,Ylabels)%%输入:x1,y1是第一个轴的xdata和ydata% x2,y2是第二个轴的xdata和ydata%x3,y3是第三轴线的xdata和ydata%ylabels是一个包含Ylabel字符串的3x1单元阵列DateTicks的%dateTicks字符串输入为DateTick('dd / mm / yy'或'yyyy')%包含轴的句柄的双数组ax - 3x1% hlines -包含行句柄的3x1双数组%%的例子:% x = 0:10;%y1 = x;Y2 = x。^ 2;y3 = x。^ 3;%ylabels {1} ='第一个y-label';% ylabels{2} = '第二y-label ';%ylabels {3} ='第三y-label';% (ax,线)= plotyyy (x, y₁,x, y2, x, y3, ylabels);%图例(hlines, 'y = x','y = x^2','y = x^3',2)%% m-files要求:没有%作者:丹尼斯吉尔伯特,博士,物理海洋学%Maurice Lamontagne Institute%。加拿大渔业部和海洋局%电子邮件:gilbertd@dfo-mpo.gc.ca%网络:http://www.qc.dfo-mpo.gc.ca/iml/% 2000年4月;最后修改:14 - 11月- 2001如果〜存在('ylabels')%使用空字符串的ylabelsylabels {1} = ';ylabels {2} = ';ylabels {3} = ';结束
图(“单位”,“归一化”,…'defaultaxesxminortick','上','defaultaxesyminortick','开');%用plotyy绘制前两行(ax,线(1)、线(2)]= plotyy (x1, y1, x2, y2);%确定日期号(如果适用)如果存在(“dateticks”)datetick(‘x’,dateticks)xtickangle (0)结束cfig = get(gcf,'color');Pos = [0.1 0.1 0.7 0.8];抵消= pos (3) / 5.5;%减少plotyy生成的两个轴的宽度Pos (3) = Pos (3) - offset/2;集(ax,“位置”,pos);%确定第三轴的位置POS3 = [POS(1)POS(2)POS(3)+偏移POS(4)];%确定第三个轴的适当x极限limx1 =得到(ax(1),“xlim”);LIMX3 = [LIMX1(1)LIMX1(1)+ 1.2 *(LIMX1(2)-LIMX1(1))];%错误修复14 11-2001:上面的线路中的1.2比例因子%是Mariano Garcia(Borgwarner Morse Tec Inc)的贡献% 3日线的颜色Linecolor = [0.9290 0.6940 0.1250];斧头(3)=轴('位置',pos3,'box','关闭',...“颜色”、“没有”、“XColor’,‘k’,‘YColor’,lineColor,……“xtick”,[],xlim, limx3,‘yaxislocation’,‘正确的’);hlines(3)=线(x3,y3,'颜色',ineceColor,'父',AX(3));limy3 =得到(ax(3),“YLim”);%隐藏x轴上不需要的部分%在第二个和第三个轴的末端之间线([limx1 (2) limx3(2)]、[limy3 (1) limy3(1)),…cfig‘颜色’,‘父’,ax(3),“剪裁”,“关闭”);轴(斧头(2))%标记所有三个y轴集(get (ax(1),“ylabel”),“字符串”,ylabels {1})集(get (ax(2),“ylabel”),“字符串”,ylabels {2})集(get (ax(3),“ylabel”),“字符串”,ylabels {3})
2019年7月16日
@Patrick Marquardt。这就是你否决这个功能的唯一原因吗?功能永远不会满足所有个人需求。这就是为什么可以修改它们的原因。用和y轴一样的方式标记x轴。进入函数并添加:
集(get (ax(1),“包含”),“字符串”,“YourWantedLabel”)
给出函数矩阵而不是向量。如果向量是列向量:x1 = xline1;日元= yline1;x2 = [xline2,xline3];Y2 = [Yline2,Yline3];x3 = xline4;y3 = yline4;[AX,HLINES] = Plotyyy(X1,Y1,X2,Y2,X3,Y3,Ylabels);
在功能中,您必须修改第45行:(ax,线(1)、线(2)]= plotyy (x1, y1, x2, y2);- > (ax,线(1)线(2:3)]= plotyy (x1, y1, x2, y2);72行:线(3)=线(x3, y3,‘颜色’,‘r’,‘父’,ax (3));——>线(4)=线(x3, y3,‘颜色’,‘r’,‘父’,ax (3));
2019年4月9日
在这种情况下如何标记x轴??
2019年4月3
2019年3月2日
2018年12月4
是否有可能为同一轴绘制多条线?我想为第一个轴画一个函数,第二个轴画两个函数,第三个轴画一个函数。我还没能想出怎么做这件事。
2018年11月29日
谢谢
2018年7月27日
你将如何继续使用像这样的特性
抓住;
2018年3月27日
这是一个非常好的提交,但它不能与datetime值为x工作。原因是,xlim属性不能设置为datetime值。烦人的解决方案是使用datenum代替,并使用xtickformat。
2018年3月14日
2018年2月9日
这对我很有帮助。谢谢你!
包含(“X”)Ylabel(斧头(1),'Y1');ylabel (ax (2), Y2);ylabel (ax(3)、Y3);
我发现这些标签很有趣和简单
2018年2月5日
-------------------------------------
'xcolor','k' - >'xcolor','none'
----------------------------------不再需要隐藏不需要的x轴线。
2018年2月1
伟大的代码。问题是,我如何改变这些轴的方向用这个函数画出来的?谢谢。
2017年9月21日
好的
当我用它的时候,我不能得到那个数字…我不懂怎么用这个密码。
2017年9月6日
您好,感谢您分享您的代码。这真的很有帮助。我试图修改它以获得所有x和y轴的对数刻度,但由于某种原因它对于第一个两个y轴完美地工作,但第三个是向右移动。任何想法为什么或可能是什么解决方案?
2017年7月13日
谢谢德尼斯夫人。这对我的工作很有用。
2017年6月11日
2017年6月9日
2017年4月17日
伟大的
2017年3月28日
谢谢你!
2017年3月9日
不错,是很有用的。
2017年1月25日
好
2017年1月10日
嗨,我有同样的问题,佩戴下面问:我正在使用函数plotyyy,它适用于罚款。更改“XLIM”(SET(AX,'XLIM',[1,12089])时,我的问题发生了;)第一个曲线从第一个Y轴延伸到第二个Y轴WICH很好,因为这个区域与路径区域对应。但第三曲线从第一个y轴延伸到第三y轴外部路径区域。因此,我的第三条曲线有一部分在路径区域之外。
有人知道我该怎么解决这个问题吗?
2016年12月21日
2016年11月18日
亲爱的丹尼斯·吉尔伯特博士
这真的是一个伟大的函数,但我有一个问题,我想绘制每个函数不同的标签(破折号,实线,itc.)。
我怎么能这样做?请帮我
2016年11月4
你好,我已经扩展了您的代码绘制4个变量在同一绘图。我想把代码告诉大家。
2016年10月5日
2016年10月3日
2016年9月21日
你好。伟大的代码!虽然我有麻烦的数据提示。我可以让数据提示出现在第2和第3轴上,但不是第一个。有任何想法吗?谢谢!
2016年7月25日
嘿,当我运行你的榜样时,我会收到一个错误的错误,说“忘记了内存。可能的原因是程序内的无限递归。”我会感谢任何帮助。
2016年7月7日
如何放大或缩小添加的线路?
2016年6月27日
为什么我的matlab不能实现这个函数?警告说:“错误:函数定义不允许在此上下文中。”这是matlab下的结果吗?
2016年4月26日
2016年2月3
2016年2月1
嘿,每个人,
是否有可能将第三个曲线作为栏?我不知道如何解决这个问题。
如果有人能给我一个建议,我会很高兴的。
2016年1月29日
嘿,谢谢你的密码!它对我很有效!
但是,我无法对该数字进行可见性。有谁知道?
2015年11月23日
效果很好,除非使用视图(-90 90)旋转绘图,它只旋转前两个,而不是最后一个绘图?
2015年10月16日
2015年10月15日
有人知道如何用这个函数来表示x轴吗?
2015年10月5日
嗨,如果我要将这个函数用于GUI的“轴”而不是“图”?
2015年1月27日
你好,谢谢你的功能浮选。我有x轴的问题。它给出了一个太宽阔的地区。如何限制XLIM,以便我可以每年轴?我试图改变'xlim'(set(ax,'xlim',[2001,2013]);)但我只是出错。
2014年5月4
2014年1月25日
2013年8月22日
2013年6月23日
2013年6月14日
你好
我正在使用函数plotyyy,它适用于罚款。更改“XLIM”(SET(AX,'XLIM',[1,12089])时,我的问题发生了;)第一个曲线从第一个Y轴延伸到第二个Y轴WICH很好,因为这个区域与路径区域对应。但第三曲线从第一个y轴延伸到第三y轴外部路径区域。因此,我的第三条曲线有一部分在路径区域之外。
2013年6月9日
伟大的功能!然而,我似乎不能添加一个xaxis标签。举个例子就好了:)
2013年4月23日
缩放和数据光标问题..只有一个图层是缩放的…其他2层呢。..PLZ帮助
2013年2月25日
看来我的第一条评论没能到达页面。基本上,如果你想在副情节结构中使用这个,你可以:- 注释出“图(...”- pos = get (gca、pos);代替pos = [0.1 0.1 0.7 0.8];- pos (3) = pos(3)抵消;而不是pos (3) = pos(3)抵消/ 2;谢谢
更正第二点:我改变了Pos = [0.1 0.1 0.7 0.8];来POS = GET(GCA,'POS');这就是我想说的。
2012年11月13日
2012年3月13日
你好,
首先感谢您写下这样的有用代码。我必须加上三个轴和浮选工作正常。
但代码只生成在新图中,尽管硬度尝试,但我不设法将三个轴生成现有的图形。你能告诉我如何解决问题吗?
强制轴线生成在我现有的图形,代码图(“单位”、“规范化”,‘DefaultAxesXMinorTick’,‘上’,‘DefaultAxesYminorTick’,‘上’)”plotyyy。M被加入评论;另外,位置单位换算成厘米,就像我自己的图中那样。
轴1和2显示出,但不是第三轴!!
请提供任何帮助,我将非常感激。
2011年8月1
好,谢谢
2010年7月24日
谢谢,很有用的!
第三行可以改成条形图吗?
干杯
2009年8月27日
做得很好!谢谢你!:)
2008年5月13日
不能使用它从路径调用文件,但非常有用,谢谢!此外,标签并没有正常工作,如该示例中所述。
2007年10月24日
不绘制两个x轴,但plotxx被列为关键字之一
2006年3月22日
不能在副图中使用,总是在新图中生成
2005年2月2日
易于使用,非常实用!
2004年9月8日
2003年12月19日
看起来真的很好
2003年11月12日
伟大的……非常感谢. .但是你知道任何一个可以一次绘制5轴吗?
2003年10月22日
2003年6月4日
谢谢。将在线数据一起绘制和分析是非常有用的
2003年3月15日
谢谢你提出了增加额外轴的方法。
2003年3月5日
很好
2003年2月17日
小而简单,但很有用
启发:myaxisc,addy_axis,plotnax.,plotyyyerrxy,Ploty4.m.,情节。米,plotses.m,multiplotyyy,plotyn(变长度输入宗量)
在MATLAB中心找到宝藏,并发现社区可以如何帮助您!
在单个可执行文件中使用代码,输出和格式化文本创建脚本。
了解实时编辑器
选择一个网站来获得可用的翻译内容,并看到当地的活动和提供。根据您所在的位置,我们建议您选择:.
您还可以从以下列表中选择一个网站:
请选择表现最佳的中国网站(中文或英文)。MathWorks的其他国家网站并没有针对您所在位置的访问进行优化。
与当地办事处联系
我有一些数字的展示位置。它始终偏离屏幕移动,除非我定义集合(GCF,“颜色”,“W”,“位置”,[0,0,1200,800]);- 零很重要!如果没有x,y = 0图“消失”。使用零,它只需填充整个屏幕(我的案例中的两个屏幕)。
另外,第二个数据序列只显示一半,两个数据点之间的线被切断……
我使用Matlab R2020a
大家好,下面的问题我需要帮助。我使用了脚本:
%% auswertung 3-fach;
扩展plotyy以包含第三个y轴
%
%语法:[AX,HLines] = Plotyyy(X1,Y1,X2,Y2,X3,Y3,Ylabels)
%
%输入:x1,y1是第一个轴的xdata和ydata
% x2,y2是第二个轴的xdata和ydata
%x3,y3是第三轴线的xdata和ydata
%ylabels是一个包含Ylabel字符串的3x1单元阵列
%
包含轴的句柄的双数组ax - 3x1
% hlines -包含行句柄的3x1双数组
%
%的例子:
x = s9780gesamt.date;
y1 = s9780gesamt.daily_median_weightavg;
y2 = S9780Gesamt.daily_mileageAVG;
y3 = s9780gesamt.daily_mileagemedian;
ylabels {1} ='daily_median_weightavg';
ylabels {2} ='daily_mileageavg';
ylabels {3} ='fuel_consumption_per_100_kmmedian';
[ax, hlines] = plotyyy(x,y1,x,y2,x,y3,ylabels);
并更新函数:
功能[AX,HLINES] = Plotyyy(X1,Y1,X2,Y2,X3,Y3,YLabels)
扩展plotyy以包含第三个y轴
%
%语法:[AX,HLines] = Plotyyy(X1,Y1,X2,Y2,X3,Y3,Ylabels)
%
%输入:x1,y1是第一个轴的xdata和ydata
% x2,y2是第二个轴的xdata和ydata
%x3,y3是第三轴线的xdata和ydata
%ylabels是一个包含Ylabel字符串的3x1单元阵列
%
包含轴的句柄的双数组ax - 3x1
% hlines -包含行句柄的3x1双数组
%
%的例子:
% x = 0:10;
%y1 = x;Y2 = x。^ 2;y3 = x。^ 3;
%ylabels {1} ='第一个y-label';
% ylabels{2} = '第二y-label ';
%ylabels {3} ='第三y-label';
% (ax,线)= plotyyy (x, y₁,x, y2, x, y3, ylabels);
%图例(hlines, 'y = x','y = x^2','y = x^3',2)
%
% m-files要求:没有
%作者:丹尼斯吉尔伯特,博士,物理海洋学
%Maurice Lamontagne Institute
%。加拿大渔业部和海洋局
%电子邮件:gilbertd@dfo-mpo.gc.ca
%网络:http://www.qc.dfo-mpo.gc.ca/iml/
% 2000年4月;最后修改:14 - 11月- 2001
如果nargin == 6
%使用空字符串的ylabels
ylabels {1} = ';ylabels {2} = ';ylabels {3} = ';
elseif nargin> 7
error('太多输入参数')
Elseif nargin < 6
错误(“不足输入参数”)
结束
图(“单位”,“归一化”,…
'defaultaxesxminortick','上','defaultaxesyminortick','开');
%用plotyy绘制前两行
(ax,线(1)、线(2)]= plotyy (x1, y1, x2, y2);
cfig = get(gcf,'color');
Pos = [0.1 0.1 0.7 0.8];
抵消= pos (3) / 5.5;
%减少plotyy生成的两个轴的宽度
Pos (3) = Pos (3) - offset/2;
集(ax,“位置”,pos);
%确定第三轴的位置
POS3 = [POS(1)POS(2)POS(3)+偏移POS(4)];
xmin = datenum(' 07 - 1月- 2019就是');
Xmax = Datenum('17 -May-2020 00:00:00');
确定第三个轴的适当x极限
limx1 = [xmin xmax];
limx3 = [xmin xmin + 1.2 *(xmax-xmin)];
% %错误修复14 11月-2001:1.2比例因子在上面的线
%%是由Mariano Garcia(Borgwarner Morse Tec Inc)提供的
斧头(3)=轴('位置',pos3,'box','关闭',...
“颜色”、“没有”、“XColor’,‘k’,‘YColor’,‘r’,……
“xtick”,[],xlim, limx3,‘yaxislocation’,‘正确的’);
线(3)=线(x3, y3,‘颜色’,‘r’,‘父’,ax (3));
limy3 =得到(ax(3),“YLim”);
%隐藏x轴上不需要的部分
%在第二个和第三个轴的末端之间
线([datestr (limx1 (2) datestr (limx3 (2))], [limy3 (1) limy3(1)),…
cfig‘颜色’,‘父’,ax(3),“剪裁”,“关闭”);
轴(斧头(2))
%标记所有三个y轴
集(get (ax(1),“ylabel”),“字符串”,ylabels {1})
集(get (ax(2),“ylabel”),“字符串”,ylabels {2})
集(get (ax(3),“ylabel”),“字符串”,ylabels {3})
我的功能基于Excel电子表格。该曲线包含三个图形,其中一个图形有偏移量。现在我不知道故障在哪里以及如何在没有偏移的情况下创建三个轴。
@iris van der veen&其他
为了使所有三个Y轴相同的X轴限制,必须调整第三个。基本上,拿起你的最小XLIM并加入你的XLIM扩展的1.2倍(在数学中,最大和最小值之间的差异)。例如,如果您的xlimits为3到10,则xmin为3,xmax为10.对于第3个X轴,您的Xmax = 3 + 1.2 *(10 - 3)。我的数据处于DateTime格式,必须转换为数据项,但我的代码如下:
%将所需的X限制转换为数据
xmin = datenum (01 - 11 - 2016);
xmax = datenum (01 - 1 - 2018);
%添加第三个x轴的偏移值,由于原始代码的偏移
%允许第3 y轴显示在第二y轴的右侧
xmax3 = xmin + 1.2 *(xmax-xmin);
%设置X轴限制
集(ax(1),“xlim”,[xmin xmax]);
集(ax(2),“xlim”,[xmin xmax]);
SET(AX(3),'XLIM',[Xmin Xmax3]);
我忘记在我以前的帖子中提到参数“fac”可以是任何合理的数字(它不一定是1.3)。略有变化之后:
Pos = [0.14 0.18 0.55 0.75];
集(ax,“位置”,pos);
fac = 1.3;
pos =[pos(1) pos(2) fac*pos(3) pos(4)];
limx1 =得到(ax(1),“xlim”);
limx3 = [limx1 (1) limx1 (1) + fac * (limx1 (2) -limx1 (1)));
有人能解释一下第48行1/5的偏移乘因子是如何确定的吗?我想知道如何确保第三个轴与另外两个轴完全对齐。
谢谢你的代码。但是谁能帮我打印这个数字??
良好的功能。我做了一些修改来满足我的要求。
- 将第3块线/轴的颜色匹配,以匹配MATLAB颜色方案。
-删除开头的nargin语句,替换为用于标识空标签的exist语句。
-添加一个数据标记输入,使xaxis被标记为数据标记字符串。
请参见下面的代码。
函数[ax,hlines] = plotyyy(x1,y1,x2,y2,x3,y3,ylabels,dateticks)
扩展plotyy以包含第三个y轴
%
%语法:[AX,HLines] = Plotyyy(X1,Y1,X2,Y2,X3,Y3,Ylabels)
%
%输入:x1,y1是第一个轴的xdata和ydata
% x2,y2是第二个轴的xdata和ydata
%x3,y3是第三轴线的xdata和ydata
%ylabels是一个包含Ylabel字符串的3x1单元阵列
DateTicks的%dateTicks字符串输入为DateTick('dd / mm / yy'或'yyyy')
%
包含轴的句柄的双数组ax - 3x1
% hlines -包含行句柄的3x1双数组
%
%的例子:
% x = 0:10;
%y1 = x;Y2 = x。^ 2;y3 = x。^ 3;
%ylabels {1} ='第一个y-label';
% ylabels{2} = '第二y-label ';
%ylabels {3} ='第三y-label';
% (ax,线)= plotyyy (x, y₁,x, y2, x, y3, ylabels);
%图例(hlines, 'y = x','y = x^2','y = x^3',2)
%
% m-files要求:没有
%作者:丹尼斯吉尔伯特,博士,物理海洋学
%Maurice Lamontagne Institute
%。加拿大渔业部和海洋局
%电子邮件:gilbertd@dfo-mpo.gc.ca
%网络:http://www.qc.dfo-mpo.gc.ca/iml/
% 2000年4月;最后修改:14 - 11月- 2001
如果〜存在('ylabels')
%使用空字符串的ylabels
ylabels {1} = ';ylabels {2} = ';ylabels {3} = ';
结束
图(“单位”,“归一化”,…
'defaultaxesxminortick','上','defaultaxesyminortick','开');
%用plotyy绘制前两行
(ax,线(1)、线(2)]= plotyy (x1, y1, x2, y2);
%确定日期号(如果适用)
如果存在(“dateticks”)
datetick(‘x’,dateticks)
xtickangle (0)
结束
cfig = get(gcf,'color');
Pos = [0.1 0.1 0.7 0.8];
抵消= pos (3) / 5.5;
%减少plotyy生成的两个轴的宽度
Pos (3) = Pos (3) - offset/2;
集(ax,“位置”,pos);
%确定第三轴的位置
POS3 = [POS(1)POS(2)POS(3)+偏移POS(4)];
%确定第三个轴的适当x极限
limx1 =得到(ax(1),“xlim”);
LIMX3 = [LIMX1(1)LIMX1(1)+ 1.2 *(LIMX1(2)-LIMX1(1))];
%错误修复14 11-2001:上面的线路中的1.2比例因子
%是Mariano Garcia(Borgwarner Morse Tec Inc)的贡献
% 3日线的颜色
Linecolor = [0.9290 0.6940 0.1250];
斧头(3)=轴('位置',pos3,'box','关闭',...
“颜色”、“没有”、“XColor’,‘k’,‘YColor’,lineColor,……
“xtick”,[],xlim, limx3,‘yaxislocation’,‘正确的’);
hlines(3)=线(x3,y3,'颜色',ineceColor,'父',AX(3));
limy3 =得到(ax(3),“YLim”);
%隐藏x轴上不需要的部分
%在第二个和第三个轴的末端之间
线([limx1 (2) limx3(2)]、[limy3 (1) limy3(1)),…
cfig‘颜色’,‘父’,ax(3),“剪裁”,“关闭”);
轴(斧头(2))
%标记所有三个y轴
集(get (ax(1),“ylabel”),“字符串”,ylabels {1})
集(get (ax(2),“ylabel”),“字符串”,ylabels {2})
集(get (ax(3),“ylabel”),“字符串”,ylabels {3})
@Patrick Marquardt。
这就是你否决这个功能的唯一原因吗?
功能永远不会满足所有个人需求。这就是为什么可以修改它们的原因。
用和y轴一样的方式标记x轴。进入函数并添加:
集(get (ax(1),“包含”),“字符串”,“YourWantedLabel”)
给出函数矩阵而不是向量。如果向量是列向量:
x1 = xline1;日元= yline1;
x2 = [xline2,xline3];Y2 = [Yline2,Yline3];
x3 = xline4;y3 = yline4;
[AX,HLINES] = Plotyyy(X1,Y1,X2,Y2,X3,Y3,Ylabels);
在功能中,您必须修改第45行:
(ax,线(1)、线(2)]= plotyy (x1, y1, x2, y2);- > (ax,线(1)线(2:3)]= plotyy (x1, y1, x2, y2);
72行:
线(3)=线(x3, y3,‘颜色’,‘r’,‘父’,ax (3));——>线(4)=线(x3, y3,‘颜色’,‘r’,‘父’,ax (3));
在这种情况下如何标记x轴??
是否有可能为同一轴绘制多条线?我想为第一个轴画一个函数,第二个轴画两个函数,第三个轴画一个函数。我还没能想出怎么做这件事。
谢谢
你将如何继续使用像这样的特性
抓住;
这是一个非常好的提交,但它不能与datetime值为x工作。原因是,xlim属性不能设置为datetime值。烦人的解决方案是使用datenum代替,并使用xtickformat。
这对我很有帮助。谢谢你!
包含(“X”)
Ylabel(斧头(1),'Y1');
ylabel (ax (2), Y2);
ylabel (ax(3)、Y3);
我发现这些标签很有趣和简单
斧头(3)=轴('位置',pos3,'box','关闭',...
“颜色”、“没有”、“XColor’,‘k’,‘YColor’,‘r’,……
“xtick”,[],xlim, limx3,‘yaxislocation’,‘正确的’);
-------------------------------------
'xcolor','k' - >'xcolor','none'
----------------------------------
不再需要隐藏不需要的x轴线。
伟大的代码。问题是,我如何改变这些轴的方向用这个函数画出来的?谢谢。
好的
当我用它的时候,我不能得到那个数字…我不懂怎么用这个密码。
您好,感谢您分享您的代码。这真的很有帮助。我试图修改它以获得所有x和y轴的对数刻度,但由于某种原因它对于第一个两个y轴完美地工作,但第三个是向右移动。任何想法为什么或可能是什么解决方案?
谢谢德尼斯夫人。这对我的工作很有用。
伟大的
谢谢你!
不错,是很有用的。
好
嗨,我有同样的问题,佩戴下面问:
我正在使用函数plotyyy,它适用于罚款。
更改“XLIM”(SET(AX,'XLIM',[1,12089])时,我的问题发生了;)
第一个曲线从第一个Y轴延伸到第二个Y轴
WICH很好,因为这个区域与路径区域对应。但第三
曲线从第一个y轴延伸到第三y轴外部
路径区域。
因此,我的第三条曲线有一部分在路径区域之外。
有人知道我该怎么解决这个问题吗?
亲爱的丹尼斯·吉尔伯特博士
这真的是一个伟大的函数,但我有一个问题,我想绘制每个函数不同的标签(破折号,实线,itc.)。
我怎么能这样做?请帮我
你好,我已经扩展了您的代码绘制4个变量在同一绘图。我想把代码告诉大家。
你好。伟大的代码!虽然我有麻烦的数据提示。我可以让数据提示出现在第2和第3轴上,但不是第一个。有任何想法吗?谢谢!
嘿,当我运行你的榜样时,我会收到一个错误的错误,说“忘记了内存。可能的原因是程序内的无限递归。”我会感谢任何帮助。
如何放大或缩小添加的线路?
为什么我的matlab不能实现这个函数?警告说:“错误:函数定义不允许在此上下文中。”这是matlab下的结果吗?
嘿,每个人,
是否有可能将第三个曲线作为栏?我不知道如何解决这个问题。
如果有人能给我一个建议,我会很高兴的。
嘿,谢谢你的密码!它对我很有效!
但是,我无法对该数字进行可见性。有谁知道?
效果很好,除非使用视图(-90 90)旋转绘图,它只旋转前两个,而不是最后一个绘图?
有人知道如何用这个函数来表示x轴吗?
嗨,如果我要将这个函数用于GUI的“轴”而不是“图”?
你好,谢谢你的功能浮选。我有x轴的问题。它给出了一个太宽阔的地区。如何限制XLIM,以便我可以每年轴?我试图改变'xlim'(set(ax,'xlim',[2001,2013]);)但我只是出错。
你好
我正在使用函数plotyyy,它适用于罚款。
更改“XLIM”(SET(AX,'XLIM',[1,12089])时,我的问题发生了;)
第一个曲线从第一个Y轴延伸到第二个Y轴
WICH很好,因为这个区域与路径区域对应。但第三
曲线从第一个y轴延伸到第三y轴外部
路径区域。
因此,我的第三条曲线有一部分在路径区域之外。
有人知道我该怎么解决这个问题吗?
伟大的功能!然而,我似乎不能添加一个xaxis标签。举个例子就好了:)
缩放和数据光标问题..
只有一个图层是缩放的…
其他2层呢。..
PLZ帮助
看来我的第一条评论没能到达页面。基本上,如果你想在副情节结构中使用这个,你可以:
- 注释出“图(...”
- pos = get (gca、pos);代替pos = [0.1 0.1 0.7 0.8];
- pos (3) = pos(3)抵消;而不是pos (3) = pos(3)抵消/ 2;
谢谢
更正第二点:
我改变了
Pos = [0.1 0.1 0.7 0.8];
来
POS = GET(GCA,'POS');
这就是我想说的。
你好,
首先感谢您写下这样的有用代码。我必须加上三个轴和浮选工作正常。
但代码只生成在新图中,尽管硬度尝试,但我不设法将三个轴生成现有的图形。你能告诉我如何解决问题吗?
强制轴线生成在我现有的图形,代码
图(“单位”、“规范化”,‘DefaultAxesXMinorTick’,‘上’,‘DefaultAxesYminorTick’,‘上’)”plotyyy。M被加入评论;另外,位置单位换算成厘米,就像我自己的图中那样。
轴1和2显示出,但不是第三轴!!
请提供任何帮助,我将非常感激。
好,谢谢
谢谢,很有用的!
第三行可以改成条形图吗?
干杯
做得很好!谢谢你!:)
不能使用它从路径调用文件,但非常有用,谢谢!此外,标签并没有正常工作,如该示例中所述。
不绘制两个x轴,但plotxx被列为关键字之一
不能在副图中使用,总是在新图中生成
易于使用,非常实用!
看起来真的很好
伟大的……
非常感谢. .
但是你知道任何一个可以一次绘制5轴吗?
谢谢。将在线数据一起绘制和分析是非常有用的
谢谢你提出了增加额外轴的方法。
很好
小而简单,但很有用