我使用 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
,它不算作图例中的真实情节。