PgfPlots:改进虚线

PgfPlots:改进虚线

编辑 3:现在我明白真正的问题是 tikz externalize。但是,我无法生成 MWE。我的代码很长,不知何故当我将其缩短时,它无法编译(但是一旦我删除 tikz externalize,它就会编译)。我会等几天,也许有人遇到过类似的问题。如果没有答案,我会接受 AboAmmar 的解决方案。

编辑 2:AboAmmar 提出的解决方案足以满足我的目的,但是我想学习下面描述的问题的解决方案。我再说一遍,下面我编写的代码也适用于小表。对于大表来说,它会出现问题。我没有隐藏任何代码。

编辑:我有 30 个不同的表,包含数千个条目。我已经提取了代码。当数据较少时,它可以工作,但是当数据较大时,就会出现我所描述的问题。我回家后可能会添加一张图片。

我的问题很简单,当使用以下代码绘制一条线时,所有点都以一条连续的线连接起来。我怎样才能让那条线消失?

\documentclass{article}
\usepackage{tikz,pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}

\addplot[smooth,red,dashed,line width = 1.5] table {};

\end{axis}
\end{tikzpicture}
\end{document}

答案1

当我从手册中添加一些数据时,这是我通过您的代码获得的结果:

虚线

\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{axis}
    \addplot [smooth, red, dashed, line width = 1.5] table[x=dof,y=L2]  {% page 46 sample data from manual
      dof L2 Lmax maxlevel
      5 8.31160034e-02 1.80007647e-01 2
      17 2.54685628e-02 3.75580565e-02 3
      49 7.40715288e-03 1.49212716e-02 4
      129 2.10192154e-03 4.23330523e-03 5
      321 5.87352989e-04 1.30668515e-03 6
      769 1.62269942e-04 3.88658098e-04 7
      1793 4.44248889e-05 1.12651668e-04 8
      4097 1.20714122e-05 3.20339285e-05 9
      9217 3.26101452e-06 8.97617707e-06 10
    };
  \end{axis}
\end{tikzpicture}
\end{document}

除非你能提供在实线上方产生虚线的代码以便我们重现该问题,否则我不确定这是否能提供更多帮助。我只能说:这不是这里发生的情况,所以你的代码一定出了问题。

答案2

以下是一个例子:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.3}
\begin{document}

\begin{tikzpicture}    
\begin{axis}
\addplot [red, only marks, mark=*, mark size=2pt] %, mark repeat={2}] 
table[row sep=crcr]{
0.6 2.64921945346413\\
0.7 2.44758628403132\\
0.8 2.24595311459851\\
0.9 2.04431994516571\\
1 1.8426867757329\\
1.1 1.64105360630009\\
1.2 1.43942043686729\\
1.3 1.23778726743448\\
1.4 1.03615409800167\\
1.5 0.834520928568865\\
1.6 0.632887759136058\\
};
\end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

要仅显示标记,您可以使用\addplot[red,only marks] table {};@Zarko 在评论中指出的方法。可以从多个符号(、、等)中选择标记*,也可以像-这样+定义自己的标记:

\pgfdeclareplotmark{<name>}{<code that draws the marks>}

编辑:

为了使标记不那么密集,您可以添加选项mark repeat={<integer>}。如果选项integer为 2,则您仅绘制每隔一个标记,如果选项integer为 3,则您仅绘制每隔一个标记,等等。

这是现在等于 2 的输出integer(与原始输出相比):

在此处输入图片描述

相关内容