Matlab 主坐标轴和次坐标轴中绘图的单个图例
我创建了一个包含两个数据集的绘图,分别位于主Y轴和次Y轴上,使用Matlab 主坐标轴和次坐标轴中绘图的单个图例,matlab,plot,octave,Matlab,Plot,Octave,我创建了一个包含两个数据集的绘图,分别位于主Y轴和次Y轴上,使用 [ ha, hl1, hl2 ] = plotyy( xr, yr, xq, yq ); 然后我用 set( hl1, 'Linestyle', '-' ); set( hl1, 'Color', 'b' ); % solid, blue set( hl2, 'Linestyle', '--' ); set( hl2, 'Color', 'r' ); % dash, red 我终于为他们俩创造了一个共同的传奇 hl
[ ha, hl1, hl2 ] = plotyy( xr, yr, xq, yq );
然后我用
set( hl1, 'Linestyle', '-' ); set( hl1, 'Color', 'b' ); % solid, blue
set( hl2, 'Linestyle', '--' ); set( hl2, 'Color', 'r' ); % dash, red
我终于为他们俩创造了一个共同的传奇
hl = legend( [ hl1, hl2 ], 'r', '\theta/\pi' );
我想(xr,yr,xq,yq)
的内容并不重要。两条线正确绘制,每条线都位于正确的轴上
图例中的第一行应该有一条(实心、蓝色)线,并且
第二行应该有一条(短划线,红色)线。
结果正好相反(见图)
如果我使用
hl = legend( [ hl2, hl1 ], 'r', '\theta/\pi' );
如果我用分号改变逗号[hl2;hl1]
。
正确的方法是什么?使用octave-4.0.1-rc4,默认图形工具包(“qt”),结果似乎很好
x = linspace(0, 2*pi, 101);
[ha, hl1, hl2] = plotyy(x, sin(x), x, -sin(x));
set( hl1, 'Linestyle', '-' ); set( hl1, 'Color', 'b' ); % solid, blue
set( hl2, 'Linestyle', '--' ); set( hl2, 'Color', 'r' ); % dash, red
hl = legend( [ hl1, hl2 ], 'r', '\theta/\pi' );
除了\theta/\pi
没有正确解释之外。
无需提交错误报告,因为它已在开发版本中解决。
但在4.0.1和图形工具包(“gnuplot”)
中,绘图很好:
所以可能是时候升级了。下面是使用类似ederag的代码的和。
x = linspace(0, 2*pi, 101);
[ha, hl1, hl2] = plotyy(x, sin(x), x, -sin(x));
set( hl1, 'Linestyle', '-' ); set( hl1, 'Color', 'b' ); % solid, blue
set( hl2, 'Linestyle', '--' ); set( hl2, 'Color', 'r' ); % dash, red
hl = legend( [ hl1, hl2 ], 'r', '\theta/\pi' );
我发现添加行
set( hl, 'fontsize', 20 );
反转图例中的线条后。据我所知,这是不特殊的(可能是一个bug?)我会设置绘图的
DisplayName
<代码>设置(hl1,'DisplayName','r')。尽管如此,我同意这是一种意外的行为。@Suever-我只是这样做了,我用与以前相同的命令创建了图例。它不起作用。如果这样做,那么就不要指定legend
@Suever的第二个输入-那么这个命令应该是什么呢?legend([hl1,hl2])
我清理了所有东西,并将与您类似的代码作为调试的起点。结果是后面的一行set(hl,'fontsize',20)
导致了反转。