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 '17, 16:11

Feidex's gravatar image

Feidex
612
Akzeptiert-Rate: 0%

bearbeitet 23 Sep '17, 16:44

esdd's gravatar image

esdd
17.8k284257


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, 23:10

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

Hat geklappt vielen Dank! :)

(23 Sep '17, 14:03) Feidex
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×298
×76
×50

gestellte Frage: 22 Sep '17, 16:11

Frage wurde gesehen: 7,265 Mal

zuletzt geändert: 23 Sep '17, 14:03