Anzeige:
Ergebnis 1 bis 9 von 9

Thema: pgfplots Strichlänge und -dicke in Legende ändern

  1. #1
    Registrierter Benutzer
    Registriert seit
    04.08.2008
    Beiträge
    62

    pgfplots Strichlänge und -dicke in Legende ändern

    Hallo,

    Ich würde gerne das Symbol, dass in meiner Legende für den Plot steht ändern. In dem Beispiel ist das einfach eine rote Linie. Mein Ziel ist nun die Linie kürzer und dicker zu machen...

    Beispiel:
    Code:
    \documentclass[11pt, oneside, a4paper]{scrreprt}
    
    \usepackage[latin1]{inputenc}																		
    \usepackage[ngerman]{babel} 																		
    \usepackage{amsmath} 																						
    \usepackage{tikz}																								
    \usepackage{pgfplots}	
    																					
    \begin{document}
    
    
    \begin{figure}
    \centering
    \footnotesize
    	\begin{tikzpicture}
    		\begin{axis}[
    			title=test,
    			xmin=0, xmax=10,
    			ymin=0, ymax=10,
    			width={14cm},
    			height={10cm}, 
    			xlabel={x},
    			ylabel={y},
    			grid=major,
    			legend style={
    				at={(axis cs:0.1,9.9)},
    				anchor=north west,
    				fill opacity=0.8,
    				draw=none,
    				fill=red!10!white,
    				},
    			]
    
    	\addplot[red!80!white,domain=1:9,line width=0.5pt] {x};
    	\addlegendentry{test};
    
    
    		\end{axis}
    	\end{tikzpicture}
    \end{figure}
    
    \end{document}
    Ich habe in der pgfpolots Dokumentation diesen codebrocken gefunden:
    \pgfplotsset{
    /pgfplots/line legend/.style={
    legend image code/.code={
    \draw[mark repeat=2,mark phase=2,##1]
    plot coordinates {
    (0cm,0cm)
    (0.3cm,0cm)
    (0.6cm,0cm)
    };%
    }
    }
    }
    und meiner Meinung nach sollte ich mein Ziel erreichen in dem ich z.B. die Koordinaten ändere (also (0,0) (0.2,0) (0.4,0))... leider habe ich damit kein Erfolg auch "line width=xpt" ändert an der Darstellung nichts...

    Viele Grüße,
    Josch

  2. #2
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Hi,

    Linie dicker:
    Code:
    legend image post style={line width =4pt}
    Das andere weiß ich so nicht.

    Gruß
    Marco

  3. #3
    Registrierter Benutzer
    Registriert seit
    04.08.2008
    Beiträge
    62
    Hi Marco,

    vielen Dank für die schnelle Antwort. Das löst mein größtes Problem.

    Grüße,
    Josch

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.07.2010
    Beiträge
    96
    Hi J0Sch,

    das mit der line legend sollte eigentlich nicht modifizierbar sein - sorry, das war so nicht markiert.

    Der codebrocken ist allerdings trotzdem der richtig Anlauf -- wenn Du *nur* den 'legend image code' kram anfasst, tut es das gewuenschte:

    Code:
    		/pgfplots/legend image code/.code={
    			\draw[mark repeat=2,mark phase=2] 
    				plot coordinates {
    					(0cm,0cm) 
    					(0.3cm,0cm)
    					(0.6cm,0cm)
    				};
    		}
    In dem Zusammenhang ist 'line legend' ist als read-only style konzipiert, mit dem man den default wiederherstellen kann.

    Mit liebem Gruss

    Christian

  5. #5
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Zitat Zitat von Feuersaenger Beitrag anzeigen
    In dem Zusammenhang ist 'line legend' ist als read-only style konzipiert, mit dem man den default wiederherstellen kann.
    Kannst du das bitte erklären.

    Gruß
    Marco

  6. #6
    Registrierter Benutzer
    Registriert seit
    23.07.2010
    Beiträge
    96
    Hallo mechanicus,

    sorry fuer die Verwirrung. Verstehe ich es richtig, dass Du nur "generell" an einem Verstaendnis zu "line legend" sowie meiner Bemerkung dazu interessiert bist?

    Line legend entstandt aus einem Anwendungsfall, in dem jemand gerne den default legend image code wiederherstellen wollte - ohne den laenglichen code dazu zu kopieren. Wenn man also 'line legend' einfach so eingibt, hat man den default wieder.

    Wenn man aber 'line legend' *ueberschreibt*, dann bekommt pgfplots das nicht mit -- denn pgfplots fragt diesen style nie ab, weil es davon ausgeht, dass niemand das aendert.

    Pgfplots definiert einfach nur 'line legend', ruft den style *einmal* beim laden des pakets auf (damit ist der default systemweit aktiv), und ignoriert den ab da. Der Style ist also nur interessant fuer nutzer, wenn sie den pgfplots-default nochmal haben wollen. Zugegenermassen etwas irrefuehrend

    Frohes Neues Jahr!

    Mit liebem Gruss

    Christian

  7. #7
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Zitat Zitat von Feuersaenger Beitrag anzeigen
    sorry fuer die Verwirrung. Verstehe ich es richtig, dass Du nur "generell" an einem Verstaendnis zu "line legend" sowie meiner Bemerkung dazu interessiert bist?
    Du hast mich richtig verstanden.

    Danke für die Erklärung.

    Gruß
    Marco

  8. #8
    Registrierter Benutzer
    Registriert seit
    04.08.2008
    Beiträge
    62
    moin moin,

    nur um das zu vervollständigen... wenn ich einen neuen Legendentyp definiere, kann ich einen kurzen, dicken Strich in der Legende darstellen.

    kurze Legende:

    Code:
    \pgfplotsset{
    	kurze Legende/.style={%
    		legend image code/.code={
    			\draw[##1,line width=0.6pt]
    				plot coordinates {
    					(0cm,0cm)
    					(0.4cm,0cm)
    					};%
    				}
    		}
    }
    ergibt dann im Minibeispiel:
    Code:
    \documentclass[11pt, oneside, a4paper]{scrreprt}
    
    \usepackage[latin1]{inputenc}																		
    \usepackage[ngerman]{babel} 																		
    \usepackage{amsmath} 																						
    \usepackage{tikz}																								
    \usepackage{pgfplots}	
    
    \pgfplotsset{
    	kurze Legende/.style={%
    		legend image code/.code={
    			\draw[##1,line width=1.6pt]
    				plot coordinates {
    					(0cm,0cm)
    					(0.2cm,0cm)
    					};%
    				}
    		}
    }
    																					
    \begin{document}
    
    
    \begin{figure}
    \centering
    \footnotesize
    	\begin{tikzpicture}
    		\begin{axis}[
    			title=test,
    			legend style={kurze Legende},
    			xmin=0, xmax=10,
    			ymin=0, ymax=10,
    			width={14cm},
    			height={10cm}, 
    			xlabel={x},
    			ylabel={y},
    			grid=major,
    			legend style={
    				at={(axis cs:0.1,9.9)},
    				anchor=north west,				
    				},
    			]
    
    	\addplot[red!80!white,domain=1:9,line width=0.5pt] {x};
    	\addlegendentry{test};
    
    
    		\end{axis}
    	\end{tikzpicture}
    \end{figure}
    
    \end{document}
    Grüße,
    Josch

  9. #9
    Registrierter Benutzer
    Registriert seit
    03.04.2012
    Beiträge
    1
    Hi!

    Ich hab ein "ähnliches" Problem, zumindest was Striche angeht.
    Soweit mir als absoluter Neuling offenbar definiere ich, wenn ich die in den Docs beschriebene Zeile "every /. axis style = .. line width =.." verwende für alle Striche in meinen Plots die Strichdicke. Es sind also Achsen und Funktionsstriche (also Verbindungen zwischen den Markierungen/Punkten) in dieser Dicke. Ich brauche allerdings regulär 1.2pt Strichdicke in den Plots - also die Linien !im Diagramm! sollen so dick sein, die Achsbeschriftungen, Achsen und Co sollten sich nicht ändern. (Btw. falls es einfach geht wäre es auch cool zu erfahren, wie man die Farben der Achsen separat vom sonstigen Text verändern kann).

    Edit: Ich kann die einzelnen \addplots vergrößern, indem ich +[line width= ] setze, allerdings muss ich das jedes mal einfügen.

    Vielen Dank
    Gruß Michael

Lesezeichen

Berechtigungen

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