Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 16

Thema: pgfplot mit tikz editieren?

  1. #1
    Registrierter Benutzer
    Registriert seit
    17.08.2009
    Beiträge
    55

    pgfplot mit tikz editieren?

    \documentclass{article}
    \usepackage{pgfplots}
    \begin{document}


    \begin{tikzpicture}
    \begin{axis}[xbar,enlargelimits=0.15]
    \addplot
    [draw=blue,pattern=horizontal lines light blue]
    coordinates
    {(10,5) (15,10) (5,15) (24,20) (30,25)};
    \addplot
    [draw=black,pattern=horizontal lines dark blue]
    coordinates
    {(3,5) (5,10) (15,15) (20,20) (35,25)};

    \end{axis}

    \tikz{\draw (0,0) -- (1,1);}
    \end{tikzpicture}


    \end{document}


    folgendes Problem, ich möchte in dem Diagramm oben einfach noch eine Linie ziehen. Da ich den Grafen in der Axisdefinition schon als xbar definiert habe kann ich nicht einfach andere funktionen einzeichnen. Nun wollte ich es mit TIKZ einfach macehn. Hab meinen kläglichen versuch mal in den Code eingebracht. Leider rutscht dann die Grafik bei mir mitten in den Fließtext rein. Wie muss der Syntax richtig lauten ?

  2. #2
    Registrierter Benutzer Avatar von bobmalaria
    Registriert seit
    28.11.2006
    Ort
    Düsseldorf
    Beiträge
    4.174
    hi,

    du kannst extra description missbrauchen

    Code:
    \documentclass{article}
    \usepackage{pgfplots}
    \usetikzlibrary{patterns}
    \begin{document}
    
    \vspace*{3cm}
    \begin{tikzpicture}[remember picture,overlay]
    
    \begin{axis}[xbar,enlargelimits=0.15,
    extra description/.code={
    \draw[line width=2pt,red] (0,0) -- (1,1);
    \draw[line width=2pt,red] (0,1) -- (1,0);}
    ]
    
    \addplot
    [draw=blue,pattern=horizontal lines light blue]
    coordinates
    {(10,5) (15,10) (5,15) (24,20) (30,25)};
    \addplot
    [draw=black,pattern=horizontal lines dark blue]
    coordinates
    {(3,5) (5,10) (15,15) (20,20) (35,25)};
    
    \end{axis}
    
    
    \end{tikzpicture}
    
    
    \end{document}
    Mein Ball ist umgefallen

  3. #3
    Registrierter Benutzer
    Registriert seit
    17.08.2009
    Beiträge
    55
    gibt es auch eine möglichkeit, dass ich die linie in den Koordinanten des von pgfplot erstellten Koordinatensystem setzen kann?

    also z.b. wenn ich bei +1,32 auf der x achse eine horziontale linie haben möchte. dass ich dann 1,32 schreiben kann bei der definition der linie ?

  4. #4
    Registrierter Benutzer
    Registriert seit
    10.09.2009
    Beiträge
    98
    ja geht:

    Code:
    \documentclass{article}
    \usepackage{pgfplots}
    \usetikzlibrary{patterns}
    \begin{document}
    
    
    \begin{tikzpicture}
    \begin{axis}[xbar,enlargelimits=0.15]
    \addplot
    [draw=blue,pattern=horizontal lines light blue]
    coordinates
    {(10,5) (15,10) (5,15) (24,20) (30,25)};
    \addplot
    [draw=black,pattern=horizontal lines dark blue]
    coordinates
    {(3,5) (5,10) (15,15) (20,20) (35,25)};
    
    \draw[red] (axis cs:10,10) -- (axis cs:10,0);
    
    \end{axis}
    \end{tikzpicture}
    
    \end{document}

  5. #5
    Registrierter Benutzer
    Registriert seit
    17.08.2009
    Beiträge
    55
    ah, das funktioniert ja wunderbar :-)

    jetzt hab ich noch eine Frage, die mir das Leben unglaublich erleichtern würde.

    Und zwar ich hab bei der x-AchsenBeschriftung keine Nummern sonder Alphanumerische Bezeichnungen. Nun geb ich dir im Mometn alle mit xticklabels={bezeichnung1,bezeichnung2,bezeichnung 3} ein. Sehr aufwändig und Fehleranfällig wenn man da viele Beschriftungen braucht.

    Die dazugehörigen Daten lese ich aus einer ASCII Tabell ein. Nun ist die Frage, kann ich die X-Labels auch irgendwie aus dieser Tabelle rausziehen ?

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

    zum tabellen einlesen gibts \pgfplotstableread. Allerdings glaube ich nicht, das man das dann (per foreach) in xticklabels reinbekommt.

    Zum einlesen externer Daten gibts noch das package datatool. Inwieweit man damit aber mit kanonen auf Spatzen schießt weiß ich nicht, da ich selbst noch nie benutzt habe ...

    Zusätzlich musst du natürlich auf Sonderzeichen in deiner alphanumerischen tabelle acht geben.

    grüße

  7. #7
    Registrierter Benutzer
    Registriert seit
    17.08.2009
    Beiträge
    55
    naja gut ich seh schon, das wird zu aufwändig. naja dann tip ich die 10 - 15 sachen eben mit copy und paste ein. zwar nicht die eleganteste lösung. aber sollte funktionieren

    hät nochmal nee kleine frage zu dem diagramm von oben mit dem code


    Code:
    \documentclass{article}
    \usepackage{pgfplots}
    \usetikzlibrary{patterns}
    \begin{document}
    
    
    \begin{tikzpicture}
    \begin{axis}[xbar,enlargelimits=0.15]
    \addplot
    [draw=blue,pattern=horizontal lines light blue]
    coordinates
    {(10,5) (15,10) (5,15) (24,20) (30,25)};
    \addplot
    [draw=black,pattern=horizontal lines dark blue]
    coordinates
    {(3,5) (5,10) (15,15) (20,20) (35,25)};
    
    \draw[red] (axis cs:10,10) -- (axis cs:10,0);
    
    \end{axis}
    \end{tikzpicture}
    
    \end{document}


    Und zwar handelt sich sich bei dem Diagramm ja um eine xbar. D.h. wenn ich legendenelemte hinzufüge für die einzelnen Datenreihen dann macht der so schöne Symbole für die Balken. Gibt es jetzt auch eine Möglichkeit wie ich meine rote Linie in die Legende bekomme kann ohne größeren Aufwand? Am besten auch mit dem Symbol von einer Linie

  8. #8
    Registrierter Benutzer
    Registriert seit
    10.09.2009
    Beiträge
    98
    wenn ich das richtig verstanden hab: ein roter strich im symbol des jeweiligen plots?

    Code:
    \documentclass{article}
    \usepackage{pgfplots}
    \usetikzlibrary{patterns}
    \begin{document}
    
    
    \begin{tikzpicture}
    \begin{axis}[xbar,enlargelimits=0.15]
    \pgfplotsset{/pgfplots/legend image code/.code={
    \draw[#1] (0cm,-0.1cm) rectangle (0.1cm,0.2cm)
     (0.2cm,-0.1cm) rectangle (0.3cm,0.1cm) ;
    \draw [red,] (-0.1cm,0.15cm) -- (0.31cm,0.15cm);}}
    \addplot
    [draw=blue,pattern=horizontal lines light blue]
    coordinates
    {(10,5) (15,10) (5,15) (24,20) (30,25)};
    \addplot
    [draw=black,pattern=horizontal lines dark blue]
    coordinates
    {(3,5) (5,10) (15,15) (20,20) (35,25)};
    \legend{nr1,nr2}
    \draw[red] (axis cs:10,10) -- (axis cs:10,0);
    
    \end{axis}
    \end{tikzpicture}
    \end{document}

  9. #9
    Registrierter Benutzer
    Registriert seit
    17.08.2009
    Beiträge
    55
    sorry, hab ich mich wohl schlecht ausgedrückt.

    Nein ich meinte, dass ich für die rote Linie gerne einen eigenen Legendeneintrag hätte.

    also wie jetzt bei dir (Bild1)"nr1" (Bild2)"nr2"(Biild vo Linie)"NameLinie".

    Also die Linie so behandeln als obs ein eigener Plot wär...


    Edit: Also noch so einen Eintrag: http://img5.imagebanana.com/view/ejyhyqz/Unbenannt.jpg
    Geändert von xyceat (09-12-2009 um 16:22 Uhr)

  10. #10
    Registrierter Benutzer Avatar von bobmalaria
    Registriert seit
    28.11.2006
    Ort
    Düsseldorf
    Beiträge
    4.174
    wir hatten schon das gleiche problem,. auf der mailingliste wurde mir dann eine lösung präsentiert die mir allerdings nur fehler produziert hat.

    in der entwicklerversion ist dieses feature wohl implemetiert, ansonsten geht der weg wohl darüber, eigene styles zu verwenden.

    leider konnte ich aber keine lösung produzieren. eventuell lohnt es sich nochmal die mailingliste zu benachrichtigen

    gruss
    Mein Ball ist umgefallen

  11. #11
    Registrierter Benutzer
    Registriert seit
    17.08.2009
    Beiträge
    55
    was ist denn die "mailingliste"

    Edit: Ich war mal so frech und hab den Autor selbst angeschrieben. Unglaublich netter Mensch, hat Email sogar innerhalb von einer Stunde beantwortet. Unglaublich.


    Die Ironie dahinter ist, er hat mein Problem in der neuen Entwicklerversion schon umgesetzt

    http://pgfplots.sourceforge.net/

    pdf Seite 109 :-)
    Geändert von xyceat (09-12-2009 um 16:52 Uhr)

  12. #12
    Registrierter Benutzer
    Registriert seit
    17.08.2009
    Beiträge
    55
    tjo, jetzt kommt die frage, die kommen musste:

    kann ich irgendwie die "developerversion" nutzen? muss ich die selber compilieren? wenn ja, krieg ich das hin und wenn ja wie ? ^^

  13. #13
    Registrierter Benutzer
    Registriert seit
    17.08.2009
    Beiträge
    55
    Zitat Zitat von borose Beitrag anzeigen
    wenn ich das richtig verstanden hab: ein roter strich im symbol des jeweiligen plots?

    Code:
    \documentclass{article}
    \usepackage{pgfplots}
    \usetikzlibrary{patterns}
    \begin{document}
    
    
    \begin{tikzpicture}
    \begin{axis}[xbar,enlargelimits=0.15]
    \pgfplotsset{/pgfplots/legend image code/.code={
    \draw[#1] (0cm,-0.1cm) rectangle (0.1cm,0.2cm)
     (0.2cm,-0.1cm) rectangle (0.3cm,0.1cm) ;
    \draw [red,] (-0.1cm,0.15cm) -- (0.31cm,0.15cm);}}
    \addplot
    [draw=blue,pattern=horizontal lines light blue]
    coordinates
    {(10,5) (15,10) (5,15) (24,20) (30,25)};
    \addplot
    [draw=black,pattern=horizontal lines dark blue]
    coordinates
    {(3,5) (5,10) (15,15) (20,20) (35,25)};
    \legend{nr1,nr2}
    \draw[red] (axis cs:10,10) -- (axis cs:10,0);
    
    \end{axis}
    \end{tikzpicture}
    \end{document}


    Hi,

    du borose, ich hät nochmal nee Frage. Ich komm mit den styles einfach noch nicht klar. Du hast da oben einen style abgeändert, das check ich auch noch. Kann ich auch einen neuen style definieren? hätte gern einen für meine legende wo ich nur eine gestrichelte linie habe. kriegs aber irgendwie nicht gebacken :-(

  14. #14
    Registrierter Benutzer
    Registriert seit
    10.09.2009
    Beiträge
    98
    wie soll denn die gestrichelte linie aussehen: umrandungslinie weicht ja vom pattern der bars ab ... hier mal eine variante, die beides abdeckt:

    Code:
    \documentclass{article}
    \usepackage{pgfplots}
    \usetikzlibrary{patterns}
    
    \begin{document}
    
    \begin{tikzpicture}
    
    \begin{axis}[xbar,enlargelimits=0.15]
    
    \pgfplotsset{/pgfplots/legend image code/.code={
    \draw [#1, line width=0.2pt] 
    (0,-0.5pt) rectangle (3pt,0.5pt) 
    (4.5pt,-0.5pt) rectangle (7.5pt,0.5pt) 
    (9pt,-0.5pt) rectangle (12pt,0.5pt);
    }}
    
    \addplot
    [draw=blue,pattern=horizontal lines light blue]
    coordinates
    {(10,5) (15,10) (5,15) (24,20) (30,25)};
    \addplot
    [draw=black,pattern=horizontal lines dark blue]
    coordinates
    {(3,5) (5,10) (15,15) (20,20) (35,25)};
    \legend{nr1,nr2}
    \draw[red] (axis cs:10,10) -- (axis cs:10,0);
    
    \end{axis}
    \end{tikzpicture}
    
    \end{document}

  15. #15
    Registrierter Benutzer
    Registriert seit
    17.08.2009
    Beiträge
    55
    Hi,
    dein Beispiel ist super. Aber wenn ich es richtig verstehe änderst du ja den legend image style. kann man auch irgendwie den style unter einem eigenen namen abspeichern. also z.b. "mein style". In der Anleitung steht da zwar was dazu mti apend style. aber ich krieg den synatax nicht so angeordnert, dass latex ihn nimmt :-(

Lesezeichen

Berechtigungen

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