PGFplots/groupplots/tikz 使用较低者:xmin 或数据

PGFplots/groupplots/tikz 使用较低者:xmin 或数据

我使用 pgfplots/groupplots/tikz 从 csv 文件制作了很多图表,使用\addplot[...] table[...]{file.csv}\nextgroupplot[...] table[...]{file.csv}

有些文件的 x 坐标既有正数也有负数,有些则全部为正数。

我想设置xmin=0所有坐标是否都是正数,如果坐标为负数则自动确定 xmin - 因此xmin始终为 0 或更低,并且始终显示所有数据。

有没有办法自动确定这一点,而不仅仅是查看数据并添加xmin=0那些不与轴交叉的数据?类似的东西if(automatically_determined_xmin>0){xmin=0},最好避免\begin{groupplot}[this bit]在每个\nextgroupplot[one of these]

梅威瑟:

\documentclass{article}[11pt]
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{pgfplots.groupplots}
\begin{document}

\begin{figure}[htbp]
    \centering
    \begin{tikzpicture}
        \begin{groupplot}[
                group style={
                    group size=2 by 1
                    },
                axis y line=middle,
                axis x line=bottom,
                x=3cm,
                xtick distance=0.5
            ]
        \nextgroupplot[]
        \addplot[] table[x=x,y=y]{
            x y
            -0.1 1
            1 -1
            };
        \nextgroupplot[]
        \addplot[] table[x=x,y=y]{
            x y
            0.9 1
            1 -1
            };
        \end{groupplot}
    \end{tikzpicture}
\end{figure}
\end{document}

组图中有两个图,第一个图过零,第二个图不过零 问题的主要症状是第二张图只有 1 个 x 标签,因此没有比例感。另外,我希望 y 轴经过 x=0。实际上,这种类型的图太多了,我可能会因为手动操作而错过一个

答案1

回答我自己以供参考,因为我找到了一个解决方案(但不太理想,因为它需要添加到每个\nextgroupplot):添加\addplot[mark=none] coordinates { (0,0) };到每个图中,并且保持xmin未设置。

[mark=none]仍然保持线条启用,但看起来它并没有只用一个点来绘制线条,因此在原点或类似位置没有多余的浮点。

答案2

这个答案使用了一些未记录的功能/技巧,我不完全理解发生了什么。无法保证它会继续工作并且不会破坏任何东西。

\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{pgfplots.groupplots}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
group style={
group size=2 by 1
},
axis y line=middle,
axis x line=bottom,
x=3cm,
xtick distance=0.5,
execute at end survey={\pgfmathparse{\csname pgfplots@xmin\endcsname<0?\csname pgfplots@xmin\endcsname:0} \expandafter\global\expandafter\let\csname pgfplots@xmin\endcsname=\pgfmathresult},
]
\nextgroupplot[]
\addplot[] table[x=x,y=y]{
x y
-0.1 1
1 -1
};
\nextgroupplot[]
\addplot[] table[x=x,y=y]{
x y
0.9 1
1 -1
};
\end{groupplot}
\end{tikzpicture}
\end{document}

两块地

我会用

\addplot[mark=none, forget plot] coordinates { (0,0) };

正如您自己的回答一样 - 请注意forget plot,它不算作图例中的真实情节。

相关内容