Gnuplot 设置图例文本';s在八度音程中向左水平对齐
我有一个图例文本,在matlab中表现为Gnuplot 设置图例文本';s在八度音程中向左水平对齐,gnuplot,octave,legend,Gnuplot,Octave,Legend,我有一个图例文本,在matlab中表现为 set(gcf,'DefaulttextHorizontalAlignment','left'); 现在我尝试在octave中复制这个命令,但是出于某种原因octave似乎忽略了上面的命令 我正在使用cygwin Xwin倍频程和GNUPlot。 (我没有试图将文本移动到“行”图例(“左”)的另一侧) 通过一些测试,我可以设置属性,但它不会影响任何东西 LegendHandle = legend( phvec, legendvec, 'Locatio
set(gcf,'DefaulttextHorizontalAlignment','left');
现在我尝试在octave中复制这个命令,但是出于某种原因octave似乎忽略了上面的命令
我正在使用cygwin Xwin倍频程和GNUPlot。(我没有试图将文本移动到“行”图例(“左”)的另一侧) 通过一些测试,我可以设置属性,但它不会影响任何东西
LegendHandle = legend( phvec, legendvec, 'Location', 'NorthEastOutside' );
legtxt=findobj(LegendHandle,'type','text');
get(legtxt(1),'HorizontalAlignment') %% returns left
我可以复制您的问题,但前提是使用gnuplot。它与其他图形工具包配合使用 虽然gnuplot是Octave的默认图形工具包已有很长一段时间了,但Octave的开发人员为了避免其局限性,一直在慢慢地用他们自己的替代品替换它。我相信Octave的最新版本已经默认为fltk,但您可以自己更改:
octave-cli-3.8.1> graphics_toolkit fltk
octave-cli-3.8.1> graphics_toolkit # confirm
ans = fltk
octave-cli-3.8.1> x = 0:0.1:10;
octave-cli-3.8.1> figure;
octave-cli-3.8.1> plot (x, [sin(x); cos(x)]);
octave-cli-3.8.1> legend ("long sin", "cos", "Location", "NorthEastOutside");
Gnuplot似乎支持更改图例水平对齐的选项,但Octave在Gnuplot中不提供对该功能的访问(尽管它与FLTK一起工作)。除了在服务器上提交一个功能请求之外,你什么也做不了 资料来源:
因此,是的,目前还没有使用gnuplot左对齐图例文本的解决方案,要删除这一糟糕的空白,您唯一能做的就是,正如您所说的,使用
legend('left')
将文本交换到符号的左侧。我不明白。如果将默认值设置为left
,然后get()
返回left,这是否意味着它不工作?你能给出一个确切的例子,带实际值的代码片段,重现问题和你所期望的吗?我不能复制。它对我有用。你用的是过时的八度音阶吗?我收回你说的话。如果使用gnuplot,我可以复制您的问题。我建议您将图形工具包切换到fltk,这在最近的倍频程版本中应该已经是默认值。谢谢,尽管我不能使用fltk,因为我会出现分段错误(可能与此问题相同)@SimonHoltz如果您遇到segfault,您应该报告它。您刚才链接到的问题是由一个坏的图形卡驱动程序引起的,通过重新安装它们解决了这个问题。另外,由于您使用的是Windows,您是否尝试了?没有针对Windows的Octave官方版本,但如果有任何版本,它将基于这些版本。@carandraug:是的,FLTK存在OpenGL驱动程序不好的问题,但是现代集成的Intel HD Graphics和一些AMD Radeon也受到这个问题的困扰(不仅是旧的驱动程序,因此在这种情况下用户无法做到)。Octave开发团队目前正在对此进行调查: