# How to draw (maybe curved) electrical field lines between two plates in TikZ

How to draw these figures in TikZ? I have managed to draw the first two figures, but the way I drew the arrows is not really good:

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\foreach \i in {-3,...,3}
\draw[->] (\i,0)--(\i,-1.1); % Figure A
%\draw[-<] (\i,0)--(\i,-1.1);   Figure B
\draw (-3,-1)--(-3,-2.2);
\draw (-2,-1)--(-2,-2.4);
\draw (-1,-1)--(-1,-2.6);
\draw (0,-1)--(0,-2.7);
\draw (3,-1)--(3,-2.2);
\draw (2,-1)--(2,-2.4);
\draw (1,-1)--(1,-2.6);
% It is ugly and time-consuming, right? but I can't find a better one
\draw[line width=3pt,red] (-3.5,0)--(3.5,0);
\draw (0,0) node[above] {$+$};
\draw[line width=3pt,blue] (-3.5,-2) to[out=-20,in=-160] (3.5,-2);
\draw (0,-2.7) node[below] {$-$};
\end{tikzpicture}
\end{document} As the way I drew the straight arrows is not optimal, I can't use it to draw the curved arrows in the last two figures.

Can you show me a better way? Thank you in advance.

• Draw the blue curve as an arc so you can predict the coordinates of points on it. And then draw arrows by [bend = xxxx]. – Symbol 1 Feb 10 '19 at 5:27
• I hope that examples A, B and D are just provided in order to let students figure out that they are not correct? – user31729 Feb 10 '19 at 8:02
• @ChristianHupfer Of course, they can be correct. And students can be very creative in explaining why they can be correct. ;-) – user121799 Feb 10 '19 at 16:32

An alternative, but very similar, approach to marmot's excellent solution (beaten by mere minutes).

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\usetikzlibrary{decorations.markings}

% Style the vertical lines (this form is necessary for the middle arrowhead)
\begin{scope}[semithick,decoration={
markings,
mark=at position 0.4 with {\arrow{>}}}
]
% Loop through and draw each vertical line
\foreach \xRed in {-3,...,3}
% Spread the bottom points horizontally
\pgfmathsetmacro\xBlue{\xRed*1.1}
% Red line is straight, but could put arbitrary function here
\pgfmathsetmacro\yRed{0}
% Blue line is curved, quadratic eqn
\pgfmathsetmacro\yBlue{0.06*\xBlue*\xBlue-2.7}
% Calculate angle of lines touching blue line
\pgfmathsetmacro\angle{6.6667*\xRed+90}
% Draw a line
\draw[postaction={decorate}] (\xRed,\yRed) to[out=-90,in=\angle] (\xBlue,\yBlue);
\end{scope}

% Red line, could put arbitrary function here
\draw[domain=-3.5:3.5,smooth,variable=\x,line width=3pt,red] plot ({\x},{0});
% + sign
\draw (0,0) node[above] {$$+$$};

\draw[domain=-3.5:3.5,smooth,variable=\x,line width=3pt,blue] plot ({\x},{0.06*\x*\x-2.7});
% - sign
\draw (0,-2.7) node[below] {$$-$$};

\end{tikzpicture}
\end{document} Welcome to TeX.SE! decoration.markings and \foreach can help a lot here. The arrows in the middle are (essentially) from here. And decorations.markings is also used to set marks along the blue curves. They get used to define the starting points of the arrows. The to[out=...,int=...] is used to bend the paths in C and D.

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{decorations.markings,arrows.meta}
\tikzset{->-/.style={postaction={decorate,decoration={
markings,
mark=at position #1 with {\arrow[arsty]{>}}}}},
-<-/.style={postaction={decorate,decoration={
markings,
mark=at position #1 with {\arrow[arsty]{<}}}}},
insert target/.style args={#1|#2}{postaction={decorate,decoration={
markings,
mark=at position #1 with {\coordinate (target-#2);}}}}
}
\begin{document}
\begin{tikzpicture}[arsty/.style={},>=Latex,font=\sffamily]
\begin{scope}[local bounding box=A]
\draw[line width=3pt,red,
%insert target/.list={1/12|Atop-1,3/12|Atop-2,5/12|Atop-3,7/12|Atop-4,9/12|Atop-5,11/12|Atop-6}
] (-3.5,0)--(3.5,0);
\draw (0,0) node[above] {$+$};
\draw[line width=3pt,blue,
insert target/.list={1/12|Abot-1,3/12|Abot-2,5/12|Abot-3,7/12|Abot-4,9/12|Abot-5,11/12|Abot-6}] (-3.5,-2) to[out=-20,in=-160] (3.5,-2);
\foreach \X in {1,...,6}
{\draw[-<-=0.5] (target-Abot-\X) -- (0,0-|target-Abot-\X);}
\draw (0,-2.7) node[below] {$-$};
\end{scope}
\node[anchor=south] at (A.north) {A};
%
\begin{scope}[local bounding box=B,xshift=8cm]
\draw[line width=3pt,red,
%insert target/.list={1/12|Btop-1,3/12|Btop-2,5/12|Btop-3,7/12|Btop-4,9/12|Btop-5,11/12|Btop-6}
] (-3.5,0)--(3.5,0);
\draw (0,0) node[above] {$+$};
\draw[line width=3pt,blue,
insert target/.list={1/12|Bbot-1,3/12|Bbot-2,5/12|Bbot-3,7/12|Bbot-4,9/12|Bbot-5,11/12|Bbot-6}] (-3.5,-2) to[out=-20,in=-160] (3.5,-2);
\foreach \X in {1,...,6}
{\draw[->-=0.5] (target-Bbot-\X) -- (0,0-|target-Bbot-\X);}
\draw (0,-2.7) node[below] {$-$};
\end{scope}
\node[anchor=south] at (B.north) {B};
%
\begin{scope}[local bounding box=C,yshift=-6cm]
\draw[line width=3pt,red,
%insert target/.list={1/12|Ctop-1,3/12|Ctop-2,5/12|Ctop-3,7/12|Ctop-4,9/12|Ctop-5,11/12|Ctop-6}
] (-3.5,0)--(3.5,0);
\draw (0,0) node[above] {$+$};
\draw[line width=3pt,blue,
insert target/.list={1/12|Cbot-1,3/12|Cbot-2,5/12|Cbot-3,7/12|Cbot-4,9/12|Cbot-5,11/12|Cbot-6}]
(-3.5,-2) to[out=-20,in=-160] (3.5,-2);
\foreach \X in {1,...,6}
{\draw[-<-=0.5] (target-Cbot-\X) to[out=69+6*\X,in=-90]
([xshift={(3.5-\X)*1.3mm}]target-Cbot-\X |-0,0);
}
\draw (0,-2.7) node[below] {$-$};
\end{scope}
\node[anchor=south] at (C.north) {C};
%
\begin{scope}[local bounding box=D,xshift=8cm,yshift=-6cm]
\draw[line width=3pt,red,
insert target/.list={1/12|Dtop-1,3/12|Dtop-2,5/12|Dtop-3,7/12|Dtop-4,9/12|Dtop-5,11/12|Dtop-6}] (-3.5,0)--(3.5,0);
\draw (0,0) node[above] {$+$};
\draw[line width=3pt,blue,
insert target/.list={1/12|Dbot-1,3/12|Dbot-2,5/12|Dbot-3,7/12|Dbot-4,9/12|Dbot-5,11/12|Dbot-6}] (-3.5,-2) to[out=-20,in=-160] (3.5,-2);
\foreach \X in {1,...,6}
{\draw[->-=0.5] (target-Dbot-\X) to[out=69+6*\X,in=-90]
([xshift={(3.5-\X)*1.3mm}]target-Dbot-\X |-0,0);
}
\draw (0,-2.7) node[below] {$-$};
\end{scope}
\node[anchor=south] at (D.north) {D};
\end{tikzpicture}
\end{document} 