16

So I havethe code below to create a plot. Now I need to add a vertically dotted line at x = 1.5. Is it possible?

\documentclass[
12pt, % font size
a4paper, % paper format
oneside, % one-sided pages
]{report}

\usepackage{tikz} % draw figures
\usetikzlibrary{shapes,arrows}
\usetikzlibrary{datavisualization}
\usetikzlibrary{datavisualization.formats.functions}
\usepackage{pgfplots} % discret signals

% math
\usepackage{amsmath}

\begin{document}

\begin{tikzpicture}
    \datavisualization [school book axes,
    visualize as smooth line/.list={one,two,three},
    y axis={label={$u(t)$}},
    x axis={label={$t$}},
    one={style={black}},
    two={style={red}},
    three={style={orange}}]

    data [set=one,format=function] {
        var x : interval [-3:3];
        func y = sin((\value x) r );
    }

    data [set=two,format=function] {
        var x : interval [-3:3];
        func y = sin((1.5 - \value x) r);
    };
\end{tikzpicture}

\end{document}
2
  • Could you please post a MWE, including the headers ? I am not able to compile this code and do not know which package is missing.
    – mvienney
    Mar 2, 2017 at 8:50
  • 1
    As an addition to the given answers, if you want to draw the line to one of the sine functions, you can use {sin(x)} as a y-coordinate (braces are needed to hide the parentheses from the parser), e.g. \draw[dashed] (1.5,0) -- (1.5,{sin(1.5 r)}); Mar 2, 2017 at 9:03

2 Answers 2

17

Just use \draw [dashed] (x1,y1) -- (x2,y2); . For example from -1 to 1:

You can use loosely dashed, densely dashed, loosely dotted, and densely dotted (Tikz manual:http://ftp.fau.de/ctan/graphics/pgf/base/doc/pgfmanual.pdf, See 2.9 Drawing options page 34 or 15.3.2 Graphic Parameters: Dash Pattern p.167)

enter image description here

MWE:

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{datavisualization.formats.functions}
\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}
    \datavisualization [school book axes,
    visualize as smooth line/.list={one,two,three},
    y axis={label={$u(t)$}},
    x axis={label={$t$}},
    one={style={black}},
    two={style={red}},
    three={style={orange}}]

    data [set=one,format=function] {
        var x : interval [-3:3];
        func y = sin((\value x) r );
    }

    data [set=two,format=function] {
        var x : interval [-3:3];
        func y = sin((1.5 - \value x) r);
    };

    \draw [dashed] (1.5,-1) -- (1.5,1);
\end{tikzpicture}

\end{document}
6

The easiest way is probably to add

\draw[dashed] (1.5,0) -- (1.5,1);

by the end of your code. And you can change the y coordinates of (1.5,0) and (1.5,1) to make your line longer.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .