Anzeige:
Ergebnis 1 bis 12 von 12

Thema: pgfplot mit 2ter y-achse

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    23.03.2011
    Beiträge
    12

    pgfplot mit 2ter y-achse

    Hallo zusammen,

    ich würde gerne ein pgfplot wie im Anhang gezeigt erstellen, konnte leider nichts dazu im Forum oder in der Doku finden. Vielleicht kann mir jemand einen Tip geben.

    Der in der Grafik gezeigte schwarze Teil habe ich wie folgt schon realisiert, der rote Teil ist die Herausforderung.


    Code:
    \pgfplotsset{width=0.9\textwidth,height=0.4\textheight,	 
    
    xtick={1995,1999,2003,2007,2011},
    x tick label style={/pgf/number format/1000 sep=},
    xlabel={Jahr},
    y tick label style={/pgf/number format/1000 sep=},
    extra x ticks={1998},
    extra x tick labels={{1998: Einführung}},
    extra x tick style={grid=major, tick label style={rotate=90, xshift=+4.75cm, yshift=+0.25cm}},
    enlarge x limits=0.01}
    			
    						
    \centering
    \begin{tikzpicture}
    \begin{axis}
    [legend pos=north west] 
     
    \addplot table [col sep=comma,trim cells=true,y=Mitarbeiter] {Entwicklung19952011.csv};
    \addlegendentry{Anzahl}
    \addplot table [col sep=comma,trim cells=true,y=Umsatz] {Entwicklung19952011.csv};
    \addlegendentry{Umsatz Euro}
    
    \end{axis}
    \end{tikzpicture}
    \caption{TEST} 
    \footnotesize Quelle: blupp
    
    {\label{fig:1}}
    
    \end{figure}

    Vielen Dank schonmal im voraus!

  2. #2
    Registrierter Benutzer
    Registriert seit
    10.09.2009
    Beiträge
    98
    Hi,

    schau lieber nochmal in die Doku

    In Version 1.4.1 ist das bei 4.8.10 "Two Ordinates (y axis) or Multiple Axes" auf Seite 132.

    Viele Güße

    edit:

    Code:
    %  Preamble:  \pgfplotsset{width=7cm,compat=1.3}
    \begin{tikzpicture}
    \begin{axis}[
    scale  only  axis,
    xmin=-5,xmax=5,
    axis  y  line*=left,%    the  ’*’  avoids  arrow  heads
    xlabel=$x$,
    ylabel=First  ordinate]
    \addplot  {x^2};
    \end{axis}
    \begin{axis}[
    scale  only  axis,
    xmin=-5,xmax=5,
    axis  y  line*=right,
    axis  x  line=none,
    ylabel=Second  ordinate]
    \addplot[red]  {3*x};
    \end{axis}
    \end{tikzpicture}
    Geändert von borose (24-03-2011 um 12:09 Uhr) Grund: Bsp

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.03.2011
    Beiträge
    12
    Vielen Dank!

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.03.2011
    Beiträge
    12
    Hallo nochmal, mein Problem konnte noch nicht ganz gelöst werden.

    Mit dem Beispiel aus der Doku überlagern sich die Achsen jetzt leider auf der linken Seite.


    \begin{tikzpicture}
    \begin{axis}
    [legend pos=north west]

    [scale only axis,
    xmin=1995,xmax=2011,
    ymin=0, ymax=1400,
    axis y line*=right,% the ’*’ avoids arrow heads
    ylabel=Anzahl der Mitarbeiter]
    \addplot table [col sep=comma, trim cells=true, y=Mitarbeiter] {Entwicklung19952011.csv};
    \addlegendentry{Anzahl der Mitarbeiter}
    \end{axis}

    \begin{axis}
    [legend pos=south east]
    [scale only axis,
    xmin=1995,xmax=2011,
    ymin=0, ymax=250,
    axis y line*=right,
    axis x line=none,
    ylabel=Umsatz in Mio. Euro]
    \addplot table [col sep=comma, trim cells=true, y=Umsatz] {Entwicklung19952011.csv};
    % \addplot table [red, col sep=comma,trim cells=true,y=Umsatz] {Entwicklung19952011.csv};
    \addlegendentry{Umsatz in Mio. Euro}
    \end{axis}
    \end{tikzpicture}



    Kann mir jemand weiterhelfen?!

    Vielen Dank
    Geändert von someone25 (29-03-2011 um 13:02 Uhr) Grund: Bild

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.03.2011
    Beiträge
    12

  6. #6
    Registrierter Benutzer
    Registriert seit
    10.09.2009
    Beiträge
    98
    ungetestet da kein Minimalbeispiel:

    Code:
    \begin{tikzpicture}
    \begin{axis}
    [legend pos=north west,
    scale only axis,
    xmin=1995,xmax=2011,
    ymin=0, ymax=1400,
    axis y line*=left,% the ’*’ avoids arrow heads
    ylabel=Anzahl der Mitarbeiter]
    \addplot table [col sep=comma, trim cells=true, y=Mitarbeiter] {Entwicklung19952011.csv};
    \addlegendentry{Anzahl der Mitarbeiter}
    \end{axis}
    
    \begin{axis}
    [legend pos=south east,
    scale only axis,
    xmin=1995,xmax=2011,
    ymin=0, ymax=250,
    axis y line*=right,
    axis x line=none,
    ylabel=Umsatz in Mio. Euro]
    \addplot table [col sep=comma, trim cells=true, y=Umsatz] {Entwicklung19952011.csv};
    % \addplot table [red, col sep=comma,trim cells=true,y=Umsatz] {Entwicklung19952011.csv};
    \addlegendentry{Umsatz in Mio. Euro}
    \end{axis}
    \end{tikzpicture}

  7. #7
    Registrierter Benutzer
    Registriert seit
    23.03.2011
    Beiträge
    12
    [QUOTE=borose;329189]ungetestet da kein Minimalbeispie l/QUOTE]

    Vielen Dank, funktioniert.


    Nur noch 2 Fragen:

    1.) Es werden immer noch beide Label überlappend auf der linken Seite angezeigt. Welcher Befhl würde das ylabel auf der rechten Seite anzeigen lassen?

    2.) Die Farben der Linien sind beide blau und mit Punkten. Wie bekomme ich für eine der beiden Kurven eine rote Linie mir Kästchen?


    Viele Grüße

  8. #8
    Registrierter Benutzer
    Registriert seit
    10.09.2009
    Beiträge
    98
    Hi,

    die Labels werden bei mir nicht überlagert. Poste mal ein lauffähiges Minimalbeispiel.

    Code:
    \begin{tikzpicture}
    \begin{axis}
    [legend pos=north west,
    scale only axis,
    xmin=1995,xmax=2011,
    ymin=0, ymax=1400,
    axis y line*=left,% the ’*’ avoids arrow heads
    ylabel=Anzahl der Mitarbeiter]
    \addplot  coordinates  {(1995,20) (2011,1400)};
    \addlegendentry{Anzahl der Mitarbeiter}
    \end{axis}
    %
    \begin{axis}
    [legend pos=south east,
    scale only axis,
    xmin=1995,xmax=2011,
    ymin=0, ymax=250,
    axis y line*=right,
    axis x line=none,
    ylabel=Umsatz in Mio. Euro]
    \addplot+[red]  coordinates  {(1995,20) (2011,200)};
    
    \addlegendentry{Umsatz in Mio. Euro}
    \end{axis}
    \end{tikzpicture}%

  9. #9
    Registrierter Benutzer
    Registriert seit
    23.03.2011
    Beiträge
    12
    Vielen Dank erstmal, leider schaffe ich auch das mit der Fabe nicht.

    Anbei das Beispiel und die .csv Datei. (Mit Koordinatenpunkten war das Ergebnis wieder ganz anders!?)

    \documentclass[12pt,a4paper,oneside, chapterprefix=false]{scrreprt}
    \usepackage{pgfplots}
    \begin{document}

    \begin{figure}[ht] \centering

    \pgfplotsset {width=0.9\textwidth,height=0.4\textheight,
    xtick={1995,1999,2003,2007,2011},
    x tick label style={/pgf/number format/1000 sep=},
    xlabel={Jahr},
    y tick label style={/pgf/number format/1000 sep=},
    extra x ticks={1998},
    extra x tick labels={{1998: Einführung}},
    extra x tick style={grid=major, tick label style={rotate=90, xshift=+4.75cm, yshift=+0.25cm}},
    %ylabel={Anzahl Mitarbeiter}
    enlarge x limits=0.01}
    \centering

    \begin{tikzpicture}
    \begin{axis}
    [legend pos=north west, scale only axis,
    xmin=1995,xmax=2011,
    ymin=0, ymax=1400,
    axis y line*=left,% the ’*’ avoids arrow heads
    ylabel=Anzahl der Mitarbeiter]
    \addplot table [col sep=comma, trim cells=true, y=Mitarbeiter] {Entwicklung19952011.csv};
    \addlegendentry{Anzahl der Mitarbeiter}
    \end{axis}

    \begin{axis}
    [legend pos=south east, scale only axis,
    xmin=1995,xmax=2011,
    ymin=0, ymax=250,
    axis y line*=right,
    axis x line=none,
    ylabel=Umsatz in Mio. Euro]
    \addplot table [col sep=comma, trim cells=true, y=Umsatz] {Entwicklung19952011.csv};
    \addlegendentry{Umsatz in Mio. Euro}
    \end{axis}

    \end{tikzpicture}
    \end{figure}
    \end{document}
    Geändert von someone25 (30-03-2011 um 14:37 Uhr) Grund: 0.4\textheight

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •