Archiv verlassen und diese Seite im Standarddesign anzeigen : 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:
\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
mechanicus
23-12-2011, 10:36
Hi,
Linie dicker:
legend image post style={line width =4pt}
Das andere weiß ich so nicht.
Gruß
Marco
Hi Marco,
vielen Dank für die schnelle Antwort. Das löst mein größtes Problem.
Grüße,
Josch
Feuersaenger
23-12-2011, 11:46
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:
/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
mechanicus
23-12-2011, 11:52
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. :confused::confused:
Gruß
Marco
Feuersaenger
01-01-2012, 15:43
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
mechanicus
01-01-2012, 22:18
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
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:
\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:
\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
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.