Legende einer schraffierten Fläche

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Legende einer schraffierten Fläche

von esdd » Fr 13. Sep 2013, 17:38

Das gibt an welche Version von pgfplots verwendet werden soll. Du hast vermutlich eine ältere, wenn er die 1.8 noch nicht kennt.

Gruß
Elke

von Linuil » Fr 13. Sep 2013, 17:30

Das ist ja cool!!
Vielen Dank, so sollte es aussehen!
Dieser Befehl "legend image code" ist ja genial.

Ich hab allerdings bei mir \pgfplotsset{compat=1.8} auskommentiert, weil bei mir die Fehlermeldung "Choice 1.8 unknown" auftrat. Bei mir lief ohne das auch durch, was macht das?


Vielen Dank!

von esdd » Fr 13. Sep 2013, 17:16

Hier ist mal ein Vorschlag:
\documentclass[border=5mm]{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.8}

\begin{document}

\begin{tikzpicture}[
  stabilitaet/.style={fill=yellow,fill opacity=0.4},
  linien/.style={black!60}]
%
\begin{axis}[width= 6cm, height =6cm,
  xmin = -3, xmax = 3, ymin=-3, ymax =3, 
  xtick={-2,-1,0,1,2}, ytick={-1,0,1},xlabel={Re(z)}, ylabel = {Im(z)},
  area legend,legend style={legend pos={outer north east}}] 
%
  \begin{scope}
    \clip[postaction={stabilitaet}](rel axis cs: 0,0)rectangle(rel axis cs: 1,1);
    \foreach \x in {-9,-8.5,...,6}{
      \edef\temp{\noexpand\draw[linien](axis cs:\x,-3)--++(axis direction cs: 6,6);}
      \temp}
  \end{scope}
%
  \addplot[draw=none,
    legend image code/.code={%
      \draw[stabilitaet] (0cm,-0.1cm) rectangle (0.6cm,0.1cm);
      \draw[linien](0cm,-0.1cm)--(0.2cm,0.1cm)(0.4cm,-0.1cm)--(0.6cm,0.1cm);}]
    coordinates {(0,0)};
  \addlegendentry{Stabilitaetsgebiet}
%
  \addplot[yellow!40, fill=white, thick, samples=100, domain=0:2*pi]
    ({1+sin(deg(x))} , {cos(deg(x))}); 
%
  \draw[black!80]
    (axis cs: -3,0) -- (axis cs: 3,0)
    (axis cs: 0,-3) -- (axis cs: 0,3);
%
  \foreach \x in {-2,-1,...,2}{
    \edef\temp{\noexpand\draw[black!80]
      (axis cs:\x,-0.1)--(axis cs: \x,0.1)
      (axis cs:-0.1,\x)--(axis cs: 0.1,\x);} 
    \temp}

\end{axis}
%
\end{tikzpicture}

\end{document}
Gruß
Elke

Legende einer schraffierten Fläche

von Linuil » Fr 13. Sep 2013, 12:47

Hallo,
ich habe mir (etwas umständlich denke ich) folgenden Plot definiert.
Jetzt gefällt mir der Plot soweit, ich würde nur gerne die Legende außerhalb des Plotes haben, die die gelbe, schraffierte Fläche als Stabilitätsgebiet ausweist.
Wie mache ich das?

Genauer: Ich hätte in der Legende gerne ein kleines gelb ausgefülltes und schwarz schraffiertes Quadrat und daneben das Wort Stabilitätsgebiet.

(Anmerkung: Wenn man den Plot irgendwie einfacher erstellen kann, bin ich für Tipps dankbar. Das Pattern für Streifen gefällt mir nicht, da die Streifen dort zu klein und hauptsächlich zu eng sind)
\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{plotmarks}
\usepackage{pgfplots}

\begin{document}
%
\begin{tikzpicture}
%
\begin{axis}[axis on top = true,
width= 6cm, height =6cm, xmin = -3, xmax = 3, ymin=-3, ymax =3,
 xtick={-2,-1,0,1,2}, ytick={-1,0,1},xlabel={Re(z)}, ylabel = {Im(z)}]
\begin{scope}% wichtig damit die Wirkung von clip begrenzt wird
% Schneiden und Füllen der eigentlichen Form
  \clip[postaction={fill=yellow,fill opacity=0.4}](axis cs:-3,-3) -- (axis cs:-3,3) -- (axis cs:3,3) -- (axis cs:3,-3) -- (axis cs:-3,-3);
% Zeichnen der Streifen
\foreach \x in {-9,-8.5,...,3}{
	\edef\temp{ \noexpand
	\addplot[black!60, samples =4, domain=\x:\x+6]{x-3-\x};}
    \temp
}
\end{scope}
\addplot[yellow!40, fill=white, thick, samples=100, domain=0:2*pi]({1+sin(deg(x))} , {cos(deg(x))});
\draw[black!80](axis cs: -3,0) -- (axis cs: 3,0);
\draw[black!80](axis cs: 0,-3) -- (axis cs: 0,3);
\foreach \x in {-2,-1,...,2}
{
	\edef \temp{ \noexpand
	\addplot[black!80, samples=2,domain=-0.1:0.1]{\x}; }
	\temp
}
\foreach \x in {-2,-1,...,2}
{
	\edef \temp{ \noexpand
	\draw[black!80](axis cs: \x,-0.1) -- (axis cs: \x, 0.1); }
	\temp
}
\end{axis}
\end{tikzpicture}
%
\end{document}

Vielen Dank für eure Hilfe!
Linuil

Nach oben