![PgfPlots:改进虚线](https://linux22.com/image/324476/PgfPlots%EF%BC%9A%E6%94%B9%E8%BF%9B%E8%99%9A%E7%BA%BF.png)
编辑 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
(与原始输出相比):