我想绘制这样的数据
\pgfplotstableread{
x y
5 10
6 12
6 12
7 11
}\dataA
\pgfplotstableread{
x y
5 8
5 15
6 10
7 13
8 14
}\dataB
第一个问题是,我没有不同的 x 值,dataA 中为 6,dataB 中为 5。我想我可以用符号坐标来解决这个问题。但为此我必须更改 x 值...
第二个问题是,两个数据不需要具有相同的域,请参见数据B 中的 8。
我想要的是一张从数据中最小 x 值到最大 x 值的图表。而双倍的 x 值则用某种东西标记。图表应该如下所示:
我需要一个快速(必要时也可以是粗略的)解决方案。谢谢!我用这个生成了图片,请注意数据已被修改!
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\pgfplotstableread{
x y
5 10
6 12
6* 12
7 11
}\dataA
\pgfplotstableread{
x y
5 8
5* 15
6 10
7 13
8 14
}\dataB
\begin{tikzpicture}
\begin{axis}[scaled y ticks = false,
symbolic x coords={5,5*,6,6*,7,8},
xticklabels={5,6,7,8},
xtick=data]
\addplot[mark=x,black] table[] from {\dataA};
\addplot[mark=x,red] table[] from {\dataB};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
我认为xtick=data
您只需要编写xtick={5,5*,6,6*,7,8}
并设置xticklabels
为您指定的标签集(应该有一种方法可以使用您的数据集自动执行此操作,但手册表明没有......)。
这样做可以得到:
完整代码如下:
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\pgfplotstableread{
x y
5 10
6 12
6* 12
7 11
}\dataA
\pgfplotstableread{
x y
5 8
5* 15
6 10
7 13
8 14
}\dataB
\begin{tikzpicture}
\begin{axis}[scaled y ticks = false,
symbolic x coords={5,5*,6,6*,7,8},
xticklabels={5,5*,6,6*,7,8},
xtick={5,5*,6,6*,7,8}]
\addplot[mark=x,black,symbolc x coords={5,6,6*,7}] table[] from {\dataA};
\addplot[mark=x,red] table[] from {\dataB};
\end{axis}
\end{tikzpicture}
\end{document}