Gnuplot 设置关键列的数量

Gnuplot 设置关键列的数量

我在使用 Gnuplot 和 TiKz 终端设置关键(即图例)列的数量时遇到了问题。下面是我所说的一个最小工作示例:

#!/usr/bin/env gnuplot
set term tikz solid
set key above
set output "out.tex"

plot sin(x) title "Title 1",    cos(x) title "Title 2",    sin(x+1) title "Title 3",    cos(x+1) title "Title 4"

输出如下内容: 正常输出。

此图像将图例中的每个地块标题排列成 4 列。但是,一旦我添加一个非常长的标题,它就会将其分成 2 列,如下所示:

输出长标题。

最初,我认为通过减小键中使用的字体大小可以改变列数。例如,可以添加set key font ",2"到 Gnuplot,这将改变键中字体的大小。这确实会减小字体的大小,但会将其保留为 2 列,而不是 4 列,如下所示:

使用设置的键字体进行输出。

我还尝试使用 Gnuplot 脚本中的 LaTeX 命令来减小标题的大小。例如,我将其添加title "\\tiny{Really Long Title}"到 Gnuplot 脚本中。但是,这也只会在键中创建 2 列,而不是 4 列,如下所示:

使用 LaTeX 命令输出。

理想情况下,我希望找到一种方法来减少图例中地块标题的大小,以便将它们重新组织成更多短列,而不是几个长列。关于如何产生这些结果,有什么想法吗?

更新:我尝试过其他终端(例如 pdf)并且产生了相同的结果,所以我认为这不仅与 TiKz 终端有关。

答案1

我看了看gnuplot 手册并且可能已经找到了你要找的东西:

set key above vertical maxrows 1

将键设置为垂直,然后指定最大行数,将1所有键设置为一行。由于键可能太长而无法完全显示,您可能需要使用width

此代码

#!/usr/bin/env gnuplot
set key above width -8 vertical maxrows 1
set terminal jpeg
set output "test.jpg"

plot sin(x) title "really long title",    cos(x) title "Title 2",    sin(x+1) title "Title 3",    cos(x+1) title "Title 4"

给出了这个test.jpg

在此处输入图片描述

答案2

这不是一个真正的答案,而是使用pgf图(请注意,您必须使用 shell-escape 才能访问 gnuplot)。键legend columns=<num>使您能够指定列数。-1表示“水平绘制所有条目”。

\documentclass{article}
\usepackage{pgfplots}
\begin{document} 
\pgfplotsset{
  every axis/.append style={width=10cm,height=6cm},
  every axis plot post/.append style={mark=none},
  every axis plot/.append style={domain=-10:10,samples=75},
  every axis legend/.append style{at={(.5,1.05)},anchor=-90,draw=none,font=\small}
}

\begin{tikzpicture}
 \begin{axis}[legend columns=-1]
  \addplot gnuplot {sin(x)};
  \addplot gnuplot {cos(x)};
  \addplot gnuplot {sin(x+1)};
  \addplot gnuplot {cos(x+1)};
  \legend{very long title,Title 2,Title 3, Title 4}
 \end{axis}
\end{tikzpicture}

\vspace{2cm}
\begin{tikzpicture}
 \begin{axis}[legend columns=2]
  \addplot gnuplot {sin(x)};
  \addplot gnuplot {cos(x)};
  \addplot gnuplot {sin(x+1)};
  \addplot gnuplot {cos(x+1)};
  \legend{very long title,Title 2,Title 3, Title 4}
 \end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案3

这可能有效也可能无效 - 我没有安装 TikZ 终端。但是,您可以尝试"\\short"在 Gnuplot 中将标题设置为,然后\newcommand{\short}{Long title}在 TeX 中使用。显然,您仍然必须确保替换的字符串确实合适。

相关内容