Matlab 主坐标轴和次坐标轴中绘图的单个图例

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

我创建了一个包含两个数据集的绘图,分别位于主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 = 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)
导致了反转。