我在使用 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 列,如下所示:
理想情况下,我希望找到一种方法来减少图例中地块标题的大小,以便将它们重新组织成更多短列,而不是几个长列。关于如何产生这些结果,有什么想法吗?
更新:我尝试过其他终端(例如 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 中使用。显然,您仍然必须确保替换的字符串确实合适。