Gnuplot 设置图例文本';s在八度音程中向左水平对齐

Gnuplot 设置图例文本';s在八度音程中向左水平对齐,gnuplot,octave,legend,Gnuplot,Octave,Legend,我有一个图例文本,在matlab中表现为 set(gcf,'DefaulttextHorizontalAlignment','left'); 现在我尝试在octave中复制这个命令,但是出于某种原因octave似乎忽略了上面的命令 我正在使用cygwin Xwin倍频程和GNUPlot。 (我没有试图将文本移动到“行”图例(“左”)的另一侧) 通过一些测试,我可以设置属性,但它不会影响任何东西 LegendHandle = legend( phvec, legendvec, 'Locatio

我有一个图例文本,在matlab中表现为

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开发团队目前正在对此进行调查: