Hi ich versuche mich gerade an der Umgebung PGFplots und bisher klappt auch alles ganz gut. Jetzt habe ich aber folgendes Problem ich habe versucht ein Graphen zu plotten und möchte nun an die verschiedenen Datenpunkte Werte schreiben. Diese sollen aber nicht wie beide der Funktion nodes near coords die x oder Y Werte wiedergeben, sondern weitere Datenwerte, die in der CSV- Datei in einer anderen Spalte abgespeichert sind. In diesem Beispiel sollen an die Datenpunkte die Werte aus der Spalte d an die Datenpunkte geschrieben werden. Mein Beispiel sieht folgendermaßen aus:

Öffne in Overleaf
\documentclass[12pt,a4paper]{article}
\usepackage{pgfplots,siunitx} 
\pgfplotsset{compat=1.9}
\usepgfplotslibrary{
 dateplot,
   fillbetween,
  units
   } 
   \begin{filecontents*}{sensifix.csv} 
       a;b;c;d
       1000;1.295;60;3
       2000;1.295;60;3
       3000;1.957;20;2
       4000;1.957;20;2
       5000;1.957;20;2
       6000;1.957;20;2
       7000;1.957;20;2
       8000;1.957;20;2
       9000;1.957;80;1
       10000;1.957;80;1

    \end{filecontents*}

 \begin{figure}[htb]
   \centering
     \begin{tikzpicture}
      \pgfplotsset{
        width=\textwidth-45pt,
        height = 0.4\textheight,
         legend style={%
      at={(0.99,0.99)},
      anchor=north east
    },
    legend cell align=left,
    ticklabel shift={0.05cm},
    tick label style={/pgf/number format/1000 sep=},
    xmin=1000,xmax=10000,
 }
\begin{axis}[
    grid = major,
    xlabel = {Kosten für den Inverter},
    x unit=\si{Euro},
    xtick={0,2000,...,10000},
    scaled ticks=false,
    ticklabel style={/pgf/number format/.cd,fixed},
    ylabel = {Maximalkapaziät der Batterie},    
    y unit=\si{\kWh},
    ymin=0, ymax=2.5,
  ]
  \addplot[color = blue, mark=*,
            mark options={solid}] table [x=a, y=b,col sep=semicolon] {Sensifix.csv}; coordinates {
            (0,1,3) [3]
        };

  \label{Transmitterlaenge}% keine Umlaute verwenden!!!
\end{axis}
 %
\begin{axis}[
    yticklabel pos=right,% yticklabel auf der rechten Seite
    ylabel = {Gesamtlänge des Transmitters},
    y unit=\si{\meter},
    ymin=0, ymax=125,
    xtick=\empty,% xticks nicht noch einmal zeichnen
  ]
  \addplot[color = red,  mark=*,
            mark options={solid}] table [x=a, y=c,col sep=semicolon]{Sensifix.csv};
  \label{Batteriekapazitaet}          
  \addlegendimage{/pgfplots/refstyle=Transmitterlaenge}
        \addlegendimage{/pgfplots/refstyle=Batteriekapazitaet}
  \addlegendentry{Transmitterlänge}
  \addlegendentry{Batteriekapazität}
  \end{axis}
  \end{tikzpicture}
 \end{figure}
\end{document}

Ich hoffe es versteht jemand das Problem und kann mir weiterhelfen.... irgendwie kann das ja nicht so schwierig sein! ^^

Danke im Voraus

MfG Feidex

gefragt 22 Sep, 10:11

Feidex's gravatar image

Feidex
61
Akzeptiert: 100%

bearbeitet 23 Sep, 10:44

esdd's gravatar image

esdd
15.5k53753


Neben nodes near coords muss noch point meta=explicit angegeben und dann im Argument von table mit meta=<spalte> die entsprechende Spalte ausgewählt werden.

Beispiel:

Öffne in Overleaf
\documentclass[12pt,a4paper]{article}
\usepackage{siunitx}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}% warum so eine alte Version?
\usepgfplotslibrary{
 dateplot,
 fillbetween,
 units
} 
\begin{filecontents*}{sensifix.csv} 
       a;b;c;d
       1000;1.295;60;3
       2000;1.295;60;3
       3000;1.957;20;2
       4000;1.957;20;2
       5000;1.957;20;2
       6000;1.957;20;2
       7000;1.957;20;2
       8000;1.957;20;2
       9000;1.957;80;1
       10000;1.957;80;1
 \end{filecontents*}
\begin{document}
\begin{figure}[htb]
  \centering
    \begin{tikzpicture}
      \pgfplotsset{
        width=\textwidth-45pt,
        height = 0.4\textheight,
        legend style={%
          at={(0.99,0.99)},
          anchor=north east
        },
        legend cell align=left,
        transpose legend=true,
        ticklabel shift={0.05cm},
        tick label style={/pgf/number format/1000 sep=},
        xmin=1000,xmax=10000,
      }
      \begin{axis}[
          grid = major,
          xlabel = {Kosten für den Inverter},
          x unit=\si{Euro},
          xtick={0,2000,...,10000},
          scaled ticks=false,
          ticklabel style={/pgf/number format/.cd,fixed},
          ylabel = {Maximalkapaziät der Batterie},    
          y unit=\si{\kWh},
          ymin=0, ymax=2.5,
        ]
        \addplot[color = blue, mark=*,
                  mark options={solid}] table [x=a, y=b,col sep=semicolon] {sensifix.csv}; 
        \label{Transmitterlaenge}% keine Umlaute verwenden!!!
      \end{axis}
 %
    \begin{axis}[
        yticklabel pos=right,% yticklabel auf der rechten Seite
        ylabel = {Gesamtlänge des Transmitters},
        y unit=\si{\meter},
        ymin=0, ymax=125,
        xtick=\empty,% xticks nicht noch einmal zeichnen
        nodes near coords,
        nodes near coords style=below,
        point meta=explicit
      ]
      \addlegendimage{/pgfplots/refstyle=Transmitterlaenge}
      \addlegendentry{Transmitterlänge}
      \addplot[color = red,  mark=*,
                mark options={solid}] table [x=a, y=c,col sep=semicolon,meta=d]{sensifix.csv};
      \label{Batteriekapazitaet}          
      \addlegendentry{Batteriekapazität}
    \end{axis}
  \end{tikzpicture}
\end{figure}
\end{document}

alt text

Ich habe noch ein paar weitere Änderungen an Deinem Code vorgenommen, u.a. \begin{document} eingefügt. Ich frage mich aber auch, warum Du bei compat so eine alte Version angibst. Aktuell wäre 1.15.

Permanenter link

beantwortet 22 Sep, 17:10

esdd's gravatar image

esdd
15.5k53753

Hat geklappt vielen Dank! :)

(23 Sep, 08:03) Feidex
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×196
×54
×47

Frage gestellt: 22 Sep, 10:11

Frage wurde angeschaut: 219 Mal

Zuletzt aktualisiert: 23 Sep, 08:03