Manuelle Legende mit tikzpicture (axis) einfügen

Tabellen und Grafiken erstellen und anordnen


lina_24642
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Mo 18. Apr 2022, 05:56

Manuelle Legende mit tikzpicture (axis) einfügen

Beitrag von lina_24642 »

Liebes Forum,

ich habe eine Grafik erstellt und in diese auch einige manuelle Punkte hinzugefügt. Nun möchte ich eine Legende (unten rechts) einfügen, die die verschiedenen Punkte erklärt:
- roter Punkt: Klasse 1
- grüner Punkt: Klasse 0

Ich habe gelesen, dass man es über \addlegendentry probieren kann. Allerdings funktioniert das bei mir noch nicht. Kann mir da eventuell jemand helfen?

Das ist mein aktueller Code:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots,amsmath}
\pgfplotsset{compat=1.17}

\begin{document}  

\begin{tikzpicture}
    \begin{axis}[
            domain=-4:4,
            samples=50,
            legend style={font=\small},
            legend cell align=left,
            legend pos=south east]
        \addplot+[mark=None, line width = 1.2] { 1 / (1 + 1 * exp(-1*x)) };
                        
        \filldraw[green] (-0.5,0.05) circle (2pt) node[anchor=east] {};%{B(-4,5)}
        \filldraw[green] (-3.8,0) circle (2pt) node[anchor=east] {};
        \filldraw[green] (-3.5,0) circle (2pt) node[anchor=east] {};
        \filldraw[green] (-3.2,0) circle (2pt) node[anchor=east] {};
        \filldraw[green] (-2.8,0.005) circle (2pt) node[anchor=east] {};
        \filldraw[green] (-2.5,0.01) circle (2pt) node[anchor=east] {};
        \filldraw[green] (-2.2,0.015) circle (2pt) node[anchor=east] {};
        \filldraw[green] (-1.8,0.02) circle (2pt) node[anchor=east] {};

        \addlegendentry{Klasse 1}
                        
        \filldraw[red] (0,0.95) circle (2pt) node[anchor=east] {};%{B(-4,5)}
        \filldraw[red] (3.8,1) circle (2pt) node[anchor=east] {};
        \filldraw[red] (3.5,1) circle (2pt) node[anchor=east] {};
        \filldraw[red] (3.2,1) circle (2pt) node[anchor=east] {};
        \filldraw[red] (2.8,0.995) circle (2pt) node[anchor=east] {};
        \filldraw[red] (2.5,0.99) circle (2pt) node[anchor=east] {};
        \filldraw[red] (2.2,0.99) circle (2pt) node[anchor=east] {};
        \filldraw[red] (1.8,0.985) circle (2pt) node[anchor=east] {}; 
        
        \addlegendentry{Klasse 0}
                    
    \end{axis}
\end{tikzpicture}

\end{document}

Gute*r Gȧst*in

Re: Manuelle Legende mit tikzpicture (axis) einfügen

Beitrag von Gute*r Gȧst*in »

Wie der Dokumentation von \addlegendentry in Abschnitt 4.9.4 "Legends" der pgfplots-Anleitung zu entnehmen ist, können mit dem Befehl Legendeneinträge zu Plots erstellt werden, die mit \addplot erzeugt wurden. Du willst hier aber offenbar eine Legende zu den \filldraw-Anweisungen. Das geht prinzipiell, indem du mit \addlegendimage{<legend options>} quasi Pseudo-Plots erzeugst. Der Befehl wird nämlich auch von jedem \addplot intern verwendet. Dabei wären <legend options> die Optionen zur Darstellung des Eintrags. Allerdings ist zu beachten, dass die \addlegendimage Aufrufe in der Reihenfolge der \addlegendimage und \addplot abgearbeitet werden. Du müsstest also im Prinzip die Legende bereits vor dem ersten Plot erstellen, wenn der Plot selbst nicht in die Legende soll:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots,amsmath}
\pgfplotsset{compat=1.17}

\begin{document}  

\begin{tikzpicture}
    \begin{axis}[
            domain=-4:4,
            samples=50,
            legend style={font=\small},
            legend cell align=left,
            legend pos=south east]
            \addlegendimage{line legend,green}\addlegendentry{Klasse 1}
            \addlegendimage{line legend,red}\addlegendentry{Klasse 0}
        \addplot+[mark=None, line width = 1.2] { 1 / (1 + 1 * exp(-1*x)) };
                        
        \filldraw[green] (-0.5,0.05) circle (2pt) node[anchor=east] {};%{B(-4,5)}
        \filldraw[green] (-3.8,0) circle (2pt) node[anchor=east] {};
        \filldraw[green] (-3.5,0) circle (2pt) node[anchor=east] {};
        \filldraw[green] (-3.2,0) circle (2pt) node[anchor=east] {};
        \filldraw[green] (-2.8,0.005) circle (2pt) node[anchor=east] {};
        \filldraw[green] (-2.5,0.01) circle (2pt) node[anchor=east] {};
        \filldraw[green] (-2.2,0.015) circle (2pt) node[anchor=east] {};
        \filldraw[green] (-1.8,0.02) circle (2pt) node[anchor=east] {};

        \filldraw[red] (0,0.95) circle (2pt) node[anchor=east] {};%{B(-4,5)}
        \filldraw[red] (3.8,1) circle (2pt) node[anchor=east] {};
        \filldraw[red] (3.5,1) circle (2pt) node[anchor=east] {};
        \filldraw[red] (3.2,1) circle (2pt) node[anchor=east] {};
        \filldraw[red] (2.8,0.995) circle (2pt) node[anchor=east] {};
        \filldraw[red] (2.5,0.99) circle (2pt) node[anchor=east] {};
        \filldraw[red] (2.2,0.99) circle (2pt) node[anchor=east] {};
        \filldraw[red] (1.8,0.985) circle (2pt) node[anchor=east] {}; 
        
    \end{axis}
\end{tikzpicture}

\end{document}
Wobei mir nicht klar ist, warum du aus den grünen und roten Punkten keine Plots machst. Aber das wäre eine andere Frage, die an anderer Stelle zu klären wäre. Für die Lösung ist es vermutlich egal.

lina_24642
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Mo 18. Apr 2022, 05:56

Re: Manuelle Legende mit tikzpicture (axis) einfügen

Beitrag von lina_24642 »

Vielen Dank Gute*r Gȧst*i - genau nach sowas habe ich gesucht1

Antworten