改变轴的原点会增加奇怪的空白

改变轴的原点会增加奇怪的空白

我想在 Tikz 图片中显示 y 分量均为负值的点。这本身没有问题,但我希望 y 轴比 x 轴略高一点以强调负值。
请参阅代码下方的屏幕截图。

在另一个具有不同数据的文件中,我使用Jake 移动坐标轴的方法。然而,在下面的文件中,增加 y 交叉坐标 ( axis line origin={0,THIS}) 只会在 Tikz 图片前添加奇怪的空白。
没有警告(除了文件内容) 显示。

造成这种情况的原因是什么?我该如何解决?

(注意:只要能产生我想要的结果,我也愿意接受不再涉及 Jake 的代码的建议。)

梅威瑟:

\documentclass[tikz,border=2pt]{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\usepackage{filecontents}
\usepackage[utf8]{luainputenc}

% Author:  Jake <https://tex.stackexchange.com/users/2552/jake>
% Link:    https://tex.stackexchange.com/a/62431/38074
% License: CC BY-SA 3.0
\pgfplotsset{
    axis line origin/.style args={#1,#2}{
        x filter/.append code={ % Check for empty or filtered out numbers
                \ifx\pgfmathresult\empty\else\pgfmathparse{\pgfmathresult-#1}\fi
            },
        y filter/.append code={
                \ifx\pgfmathresult\empty\else\pgfmathparse{\pgfmathresult-#2}\fi
            },
        xticklabel=\pgfmathparse{\tick+#1}\pgfmathprintnumber{\pgfmathresult},
        yticklabel=\pgfmathparse{\tick+#2}\pgfmathprintnumber{\pgfmathresult}
    }
}

\begin{filecontents*}{data.csv}
Data
t;x;y
0.000000000E0;6.348840913E-4;9.925120686E-4
8.333333333E-3;5.838627285E-4;4.724618695E-4
1.666666667E-2;1.094161960E-3;-2.700310368E-3
2.500000000E-2;7.550411425E-4;-5.097581518E-3
3.333333333E-2;6.794111604E-4;-9.011432646E-3
4.166666667E-2;3.461038282E-4;-1.562674575E-2
5.000000000E-2;1.282057031E-4;-1.909622209E-2
5.833333333E-2;-3.401256682E-4;-2.518409682E-2
1.408333333E0;-3.104116765E-2;-1.739549231E0
1.416666667E0;-3.322785461E-2;-1.740279419E0
1.425000000E0;-3.599135975E-2;-1.742337105E0
1.433333333E0;-3.808925614E-2;-1.744682891E0
1.541666667E0;-7.108984101E-2;-1.839024730E0
1.550000000E0;-7.297102460E-2;-1.857275769E0
1.558333333E0;-7.571494352E-2;-1.870979850E0
1.566666667E0;-7.854608723E-2;-1.892338940E0
1.575000000E0;-8.274961995E-2;-1.897014288E0
\end{filecontents*}


\begin{document}
    \begin{tikzpicture}
        \pgfplotsset{ticks=none}
        \begin{axis}[
            axis x line=right,
            axis y line=left,
            axis lines=middle,
            axis line origin={0,0.5},
            xlabel=Time,
            ylabel=x,
            xticklabel style={inner xsep=0pt, anchor=north west},
            xtick={0},
            after end axis/.code={
                \path (axis cs:0,0)
                node [anchor=south east,xshift=-0.075cm] {0};
            }
        ]
            \addplot[color=red,ultra thick] table [
                skip first n=1,
                col sep=semicolon,
                x=t,
                y=y
            ] {data.csv};
        \end{axis}
    \end{tikzpicture}
\end{document}

目前结果:

实际结果

我想要的结果:

想要的结果

答案1

我不确定你到底想要什么结果,但如果你只想将纵坐标线向上延伸一点,你可以设置enlarge y limits={upper, value=0.2}。值为0.2将轴延伸 20%。

\documentclass[tikz,border=2mm]{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\usepackage{filecontents}


\begin{filecontents*}{data.csv}
Data
t;x;y
0.000000000E0;6.348840913E-4;9.925120686E-4
8.333333333E-3;5.838627285E-4;4.724618695E-4
1.666666667E-2;1.094161960E-3;-2.700310368E-3
2.500000000E-2;7.550411425E-4;-5.097581518E-3
3.333333333E-2;6.794111604E-4;-9.011432646E-3
4.166666667E-2;3.461038282E-4;-1.562674575E-2
5.000000000E-2;1.282057031E-4;-1.909622209E-2
5.833333333E-2;-3.401256682E-4;-2.518409682E-2
1.408333333E0;-3.104116765E-2;-1.739549231E0
1.416666667E0;-3.322785461E-2;-1.740279419E0
1.425000000E0;-3.599135975E-2;-1.742337105E0
1.433333333E0;-3.808925614E-2;-1.744682891E0
1.541666667E0;-7.108984101E-2;-1.839024730E0
1.550000000E0;-7.297102460E-2;-1.857275769E0
1.558333333E0;-7.571494352E-2;-1.870979850E0
1.566666667E0;-7.854608723E-2;-1.892338940E0
1.575000000E0;-8.274961995E-2;-1.897014288E0
\end{filecontents*}


\begin{document}
    \begin{tikzpicture}
        \pgfplotsset{ticks=none}
        \begin{axis}[
            axis lines=middle,
            enlarge y limits={upper, value=0.2},
            xlabel=Time,
            ylabel=x,
            xticklabel style={inner xsep=0pt, anchor=west},
            xtick={0},
            after end axis/.code={
                \node at (axis cs:0,0) [anchor=east] {0};
            }
        ]
            \addplot[color=red,ultra thick] table [
                skip first n=1,
                col sep=semicolon,
                x=t,
                y=y
            ] {data.csv};
        \end{axis}
    \end{tikzpicture}
\end{document}

相关内容