2

When trying to plot multiple dashed lines over the same dashed line in pgfplots, the dashing mismatches, and draws a full line, is there any way to circumvent this?

MVE left; drawn with pgfplots, right; drawn with tikz (I want the tikz effect with the easiness of pgfplots)

Returns this

enter image description here

\begin{filecontents}{test.txt}
        a       b
        1       0
        0       1
        0       0
        1       0
        0       1
        1       0
\end{filecontents}
\documentclass[border=5mm]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
        \begin{axis}[mark={}]
                \addplot [dashed] table [x=a,y=b]{test.txt};
        \end{axis}
\end{tikzpicture}
\begin{tikzpicture}
        \draw[dashed] (1,0) -- (0,1) -- (0,0) -- (1,0) -- (1,0) -- (0,1) --(1,0);
\end{tikzpicture}
\end{document}
3
  • 2
    It's just a matter of scale and coincidence, I suppose. Set width=7.1cm (for example) for the axis, and you don't get full overlap, but add [scale=1.201] for the second tikzpicture and you do get the overlap there. You could also add dash phase=1pt to the \addplot options in the pgfplots case to remove (most of) the overlap. But none of these are general solutions. Nov 14 '17 at 16:27
  • Is there a way to find the optimal dash phase? I want to plot a unit cell (no the MWE), and i have 2 or three overlapping lines, with the overlapping being different for all cases (although theres a 3d distance of 1 between all points). I tried designing my own dashdotted line, but still get some overlap. Nov 14 '17 at 16:34
  • Tried setting the dash phase=2pt for my unit cell, and it looks great, thanks a lot. Would however love for some way of doing this automaticly. Nov 14 '17 at 16:40
2

While not a general, automatic solution, it's possible to play around with the dash phase or custom dash patterns, to avoid (at least most of) the overlapping.

output of code

\begin{filecontents}{test.txt}
        a       b
        1       0
        0       1
        0       0
        1       0
        0       1
        1       0
\end{filecontents}
\documentclass[border=5mm]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[mark={}]
      \addplot [dashed,dash phase=1pt] table [x=a,y=b]{test.txt};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[mark={}]
      \addplot [dash pattern=on 0pt off 1pt on 5.68pt] table [x=a,y=b]{test.txt};
\end{axis}
\end{tikzpicture}
\end{document}
6
  • Thanks a lot for the answer, I will accept it for now, but should someone come with a answer that works for the general case I will unaccept your answer and accept theirs. Nov 14 '17 at 21:24
  • @ThorbjørnE.K.Christensen Of course. Nov 14 '17 at 21:27
  • I was just being precarious; I would feel bad if i unaccepted your answer without letting you know why, and I thought that I might forget to make the comment if I ever saw a general answer. Nov 14 '17 at 21:37
  • Oh wait, just noticed the dash pattern you made starts with 0pt what does this do? Nov 14 '17 at 21:38
  • @ThorbjørnE.K.Christensen Ehm, just something weird I happened to try. Looking more closely at the result, I'm not entirely sure exactly what it does ... Nov 14 '17 at 21:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.