一个图中没有不同的 x 值和不同的域

一个图中没有不同的 x 值和不同的域

我想绘制这样的数据

\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}

相关内容