
Ich schreibe ein Dokument, das nur sehr wenige tatsächliche Diagramme erfordert, und bin mit der Ästhetik von Tikz zufrieden. Ich habe jedoch Probleme, eine Möglichkeit zu finden, eine einfache Legende in Tikz zu erstellen. Ich weiß, dass es mit der Datenvisualisierungsbibliothek eine Möglichkeit gibt, aber für einfache Diagramme scheint sie viel zu kompliziert zu sein. Einige Leute schlugen vor, Matrizen zu verwenden, was sich als ziemlich genau das herausstellte, was ich wollte, und zwar so:
\documentclass[11pt]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[->] (-1,0) -- (8,0) node[right]{$x$};
\draw[->] (0,-2) -- (0,2) node[above]{$y$};
\draw[green,samples=100,domain=-1:8] plot(\x,{sin(deg(\x))});
\draw[red,samples=100,domain=-1:8] plot(\x,{cos(deg(\x))});
\draw[blue] (0,0)--(pi/2,1)--(3*pi/2,-1)--(5*pi/2,1);
\matrix [draw, above left] at (8,-2) {
\node[green,font=\tiny] {$\sin x$}; \\
\node[red,font=\tiny] {$\cos x$}; \\
\node[blue,font=\tiny] {Lines}; \\
};
\end{tikzpicture}
\end{document}
Ich möchte jedoch, dass die Legende den Zeichenstil der Diagramme anzeigt. So wie wir es im Tikz-Handbuch sehen können:
Kann ich das mit Matrizen machen? Ich möchte auch, dass die Legende linksbündig ausgerichtet ist, im Moment ist sie rechts, aber ich habe keine Ahnung, wie ich das ändern kann.
Antwort1
Ich bevorzuge auch pfgplots, aber der Vollständigkeit halber hier eine Methode, die pic
s verwendet.
\documentclass[11pt]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[pics/legend entry/.style={code={%
\draw[pic actions]
(-0.5,0.25) sin (-0.25,0.4) cos (0,0.25) sin (0.25,0.1) cos (0.5,0.25);}}]
\draw[->] (-1,0) -- (8,0) node[right]{$x$};
\draw[->] (0,-2) -- (0,2) node[above]{$y$};
\draw[green!70!black,samples=100,domain=-1:8] plot(\x,{sin(deg(\x))});
\draw[red,samples=100,domain=-1:8] plot(\x,{cos(deg(\x))});
\draw[blue] (0,0)--(pi/2,1)--(3*pi/2,-1)--(5*pi/2,1);
\matrix [draw, above left] at (8,-2) {
\pic[green!70!black]{legend entry}; & \node[green!70!black,font=\tiny] {$\sin x$}; \\
\pic[red]{legend entry}; & \node[red,font=\tiny] {$\cos x$}; \\
\pic[blue]{legend entry}; & \node[blue,font=\tiny] {Lines}; \\
};
\end{tikzpicture}
\end{document}
Zum Ausrichten der Textknoten können Sie verwendendiese Tricks.
\documentclass[11pt]{article}
\usepackage{tikz}
\usepackage{eqparbox}
\begin{document}
\newbox\eqnodebox
\tikzset{lequal size/.style={execute at begin
node={\setbox\eqnodebox=\hbox\bgroup},
execute at end node={\egroup\eqmakebox[#1][l]{\copy\eqnodebox}}},
lequal size/.default=A,}
\begin{tikzpicture}[pics/legend entry/.style={code={%
\draw[pic actions]
(-0.5,0.25) sin (-0.25,0.4) cos (0,0.25) sin (0.25,0.1) cos (0.5,0.25);}}]
\draw[->] (-1,0) -- (8,0) node[right]{$x$};
\draw[->] (0,-2) -- (0,2) node[above]{$y$};
\draw[green!70!black,samples=100,domain=-1:8] plot(\x,{sin(deg(\x))});
\draw[red,samples=100,domain=-1:8] plot(\x,{cos(deg(\x))});
\draw[blue] (0,0)--(pi/2,1)--(3*pi/2,-1)--(5*pi/2,1);
\matrix [draw, above left] at (8,-2) {
\pic[green!70!black]{legend entry}; & \node[lequal size,green!70!black,font=\tiny] {$\sin x$}; \\
\pic[red]{legend entry}; & \node[lequal size,red,font=\tiny] {$\cos x$}; \\
\pic[blue]{legend entry}; & \node[lequal size,blue,font=\tiny] {Lines}; \\
};
\end{tikzpicture}
\end{document}
Antwort2
Um ein einheitliches Erscheinungsbild zu erhalten, empfehle ich, für Diagramme niemals reines TikZ zu verwenden, sondern immer das auf TikZ basierende PGFPlot.
\documentclass[11pt]{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
samples=100,
domain=-1:8,
xmin=-1, xmax=8,
ymin=-2, ymax=2,
axis lines=middle,
ticks=none,
xlabel={$x$},
ylabel={$y$},
legend pos=south east,
width=\textwidth,
height=0.5*\textwidth]
\addplot[green] {sin(deg(\x))};
\addplot[red] {cos(deg(\x))};
\addplot[blue] coordinates{(0,0) (pi/2,1) (3*pi/2,-1) (5*pi/2,1)};
\addlegendentry{$sin(x)$}
\addlegendentry{$cos(x)$}
\addlegendentry{Lines}
\end{axis};
\end{tikzpicture}
\end{document}