我在 pgfplots 中使用scale
和时遇到问题。set layers
我必须使用,set layers
因为我希望一个图中的几条曲线彼此重叠(这在下面的示例代码中并不明显),并且我想使用 scale 使图和标签更小。如果运行我的示例代码,您可以从第一个图中看到,如果使用set layers
和,一切都很好scale=1
。如果scale=0.8
不使用set layers
,则一切都按预期工作(第二张图;在我的实际图中,曲线不再彼此重叠)。但如果使用scale=0.8
和set layers
,就会产生奇怪的结果。图变小了,但标签没变。而且图例的位置也不对。
谁能告诉我我做错了什么?我真的必须set layers
一起使用scale
,这样我的真实情节才能看起来不错。
这是我使用的代码:
\documentclass{report}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\begin{filecontents}{TableQuestion.txt}
xValue1 yValue1 xValue2 yValue2
1 0 1 0.2
2 1 2 0.9
3 1.5 3 1.6
4 0.5 4 0.4
\end{filecontents}
\begin{document}
\begin{tikzpicture}[scale=1]%everything ok
\begin{axis}[
set layers,
xlabel=$x$,ylabel=$y$,legend pos=north west,legend cell align=left]%
\addplot[color=blue,
mark=*,mark layer=like plot]%
table[x=xValue1,y=yValue1] {TableQuestion.txt};%
\addplot[color=red,
mark=none]%
table[x=xValue2,y=yValue2] {TableQuestion.txt};%
\legend{first entry, second entry}
\end{axis}%
\end{tikzpicture}%
\vspace{1cm}
\begin{tikzpicture}[scale=0.8]%everything ok
\begin{axis}[
%set layers,
xlabel=$x$,ylabel=$y$,legend pos=north west,legend cell align=left]%
\addplot[color=blue,
mark=*,mark layer=like plot]%
table[x=xValue1,y=yValue1] {TableQuestion.txt};%
\addplot[color=red,
mark=none]%
table[x=xValue2,y=yValue2] {TableQuestion.txt};%
\legend{first entry, second entry}
\end{axis}%
\end{tikzpicture}%
\vspace{1cm}
\begin{tikzpicture}[scale=0.8]%odd behaviour
\begin{axis}[
set layers,
xlabel=$x$,ylabel=$y$,legend pos=north west,legend cell align=left]%
\addplot[color=blue,
mark=*,mark layer=like plot]%
table[x=xValue1,y=yValue1] {TableQuestion.txt};%
\addplot[color=red,
mark=none]%
table[x=xValue2,y=yValue2] {TableQuestion.txt};%
\legend{first entry, second entry}
\end{axis}%
\end{tikzpicture}%
\end{document}
答案1
这听起来像是 pgfplots 中的一个错误。
这个特定示例的解决方法是绘制 tikzpicture没有然后缩放整个 tikzpicture。这可以是 scalebox 或 tikzpicture,其格式如下transform shape
:
\begin{tikzpicture}[transform shape,scale=0.8]%odd behaviour
\node {%
\begin{tikzpicture}
\begin{axis}[
set layers,
xlabel=$x$,ylabel=$y$,legend pos=north west,legend cell align=left]%
\addplot[color=blue,
mark=*,mark layer=like plot]%
table[x=xValue1,y=yValue1] {TableQuestion.txt};%
\addplot[color=red,
mark=none]%
table[x=xValue2,y=yValue2] {TableQuestion.txt};%
\legend{first entry, second entry}
\end{axis}%
\end{tikzpicture}%
};%
\end{tikzpicture}%