Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 6
vereinfachter Vorschlag

14 Aug '14, 16:58

esdd's gravatar image

esdd
17.8k304257

**Edit** Eine einfache Möglichkeit wäre, die Begrenzungslinien in der gleichen Farbe wie die Füllung zeichnen zu lassen: \addplot[gray,fill]coordinates{(1920,400)(1930,230)(1940,50)(1950,10)}; ![alt text][1] Code: \documentclass{scrbook} \usepackage{lmodern} \usepackage{pgfplots} \pgfplotsset{compat=1.10} \tikzset{tikzschrift/.style={font=\small}} \newcommand{\balkenbreite}{1.2cm} % Balkenbreite für Balkendiagramme \begin{document} \begin{tikzpicture}[tikzschrift] \begin{axis}[ybar=10pt, % gibt Balkendiagramm vor legend style={draw=none},% keinen Rahmen um Legende axis x line*=bottom, axis y line*=left, ymin=0, ymax=600, enlarge y limits=0.0, enlarge x limits=0.15, symbolic x coords={1920,1930,1940,1950}, x tick label style={text width=2.5cm,align=center}, xtick={data}, ytick={100,200,300,400,500,600}, nodes near coords, width=\linewidth, height=0.3\linewidth, bar width=\balkenbreite, ] \addplot[gray,fill]coordinates{(1920,400)(1930,230)(1940,50)(1950,10)}; \addplot[black!20,fill]coordinates{(1920,560)(1930,230)(1940,50)(1950,10)}; \legend{Grau, Hellgrau}; \end{axis} \end{tikzpicture} \end{document} ---------- **Ursprünglicher Vorschlag** Die Option `ybar` der `axis` Umgebung aktiviert den Stil `ybar legend`, der laut Doku von pgfplots so definiert ist: \pgfplotsset{ /pgfplots/ybar legend/.style={ /pgfplots/legend image code/.code={% \draw[##1,/tikz/.cd,bar width=3pt,yshift=-0.2em,bar shift=0pt] plot coordinates {(0cm,0.8em) (2*\pgfplotbarwidth,0.6em)};} } Mit `##1` wird der Stil des jeweiligen Plots übernommen. Warum das für die Option `draw=none` nicht gilt, ist mir allerdings nicht klar. Eine mögliche Ursache ist eventuell, dass laut Doku gleichzeitig auch der Stil `every axis legend` wirksam ist. Als mögliche Lösung kann man bei den `\addplot` zusätzlich oder ersatzweise die Option `draw opacity=0` angeben. Dann sind auch die Ränder der Legendenbildern nicht sichtbar: \addplot[fill=gray,draw=none,draw opacity=0]coordinates{(1920,400)(1930,230)(1940,50)(1950,10)}; Alternativ kann man `legend style={draw opacity=0}` als Option der `axis` Umgebung angeben. Dann verschwinden sowohl die Ränder der Legendenbilder als auch der Rahmen der Legende: \begin{axis}[..., legend style={draw opacity=0},...]...\end{axis} Man kann sich aber auch einen eigenen Stil für die Legendenbilder definieren. Im folgenden Code ist lediglich `\draw` durch `\path` ersetzt: \pgfplotsset{% /pgfplots/my ybar legend/.style={ legend image code/.code={% \path[##1,/tikz/.cd,bar width=3pt,yshift=-0.2em,bar shift=0pt] plot coordinates {(0cm,0.8em) (2*\pgfplotbarwidth,0.6em)};% } } } Diesen eigenen Stil kann man dann nach `ybar=...` als Option für die `axis` Umgebung verwenden: \documentclass{scrbook} \usepackage{lmodern} \usepackage{pgfplots} \pgfplotsset{compat=1.9} % eigener Stil für die Legendenbilder \pgfplotsset{% /pgfplots/my ybar legend/.style={ legend image code/.code={% \path[##1,/tikz/.cd,bar width=3pt,yshift=-0.2em,bar shift=0pt] plot coordinates {(0cm,0.8em) (2*\pgfplotbarwidth,0.6em)};% } } } \tikzset{tikzschrift/.style={font=\small}} \newcommand{\balkenbreite}{1.2cm} % Balkenbreite für Balkendiagramme \begin{document} \begin{tikzpicture}[tikzschrift] \begin{axis}[ybar=10pt, % gibt Balkendiagramm vor my ybar legend,% eigenen Stil für die Legendenbilder verwenden legend style={draw=none},% keinen Rahmen um Legende axis x line*=bottom, axis y line*=left, ymin=0, ymax=600, enlarge y limits=0.0, enlarge x limits=0.15, symbolic x coords={1920,1930,1940,1950}, x tick label style={text width=2.5cm,align=center}, xtick={data}, ytick={100,200,300,400,500,600}, nodes near coords, width=\linewidth, height=0.3\linewidth, bar width=\balkenbreite, ] \addplot[fill=gray,draw=none]coordinates{(1920,400)(1930,230)(1940,50)(1950,10)}; \addplot[fill=black!20,draw=none]coordinates{(1920,560)(1930,230)(1940,50)(1950,10)}; \legend{Grau, Hellgrau}; \end{axis} \end{tikzpicture} \end{document} ![alt text][1] text][2] [1]: http://texwelt.de/wissen/upfiles/legende.png [2]: http://texwelt.de/wissen/upfiles/EigeneLegende_1.PNG
Klicke auf Einblenden/Ausblenden von Überarbeitungen 5

25 Okt '13, 17:05

esdd's gravatar image

esdd
17.8k304257

Die Option `ybar` der `axis` Umgebung aktiviert den Stil `ybar legend`, der laut Doku von pgfplots so definiert ist: \pgfplotsset{ /pgfplots/ybar legend/.style={ /pgfplots/legend image code/.code={% \draw[##1,/tikz/.cd,bar width=3pt,yshift=-0.2em,bar shift=0pt] plot coordinates {(0cm,0.8em) (2*\pgfplotbarwidth,0.6em)};} } Mit `##1` wird der Stil des jeweiligen Plots übernommen. Warum das für die Option `draw=none` nicht gilt, ist mir allerdings nicht klar. Eine mögliche Ursache ist eventuell, dass laut Doku gleichzeitig auch der Stil `every axis legend` wirksam ist. Als mögliche Lösung kann man bei den `\addplot` zusätzlich oder ersatzweise die Option `draw opacity=0` angeben. Dann sind auch die Ränder der Legendenbildern nicht sichtbar: \addplot[fill=gray,draw=none,draw opacity=0]coordinates{(1920,400)(1930,230)(1940,50)(1950,10)}; Alternativ kann man `legend style={draw opacity=0}` als Option der `axis` Umgebung angeben. Dann verschwinden sowohl die Ränder der Legendenbilder als auch der Rahmen der Legende: \begin{axis}[..., legend style={draw opacity=0},...]...\end{axis} Man kann sich aber auch einen eigenen Stil für die Legendenbilder definieren. Im folgenden Code ist lediglich `\draw` durch `\path` ersetzt: \pgfplotsset{% /pgfplots/my ybar legend/.style={ legend image code/.code={% \path[##1,/tikz/.cd,bar width=3pt,yshift=-0.2em,bar shift=0pt] plot coordinates {(0cm,0.8em) (2*\pgfplotbarwidth,0.6em)};% } } } Diesen eigenen Stil kann man dann nach `ybar=...` als Option für die `axis` Umgebung verwenden: \documentclass{scrbook} \usepackage{lmodern} \usepackage{pgfplots} \pgfplotsset{compat=1.9} % eigener Stil für die Legendenbilder \pgfplotsset{% /pgfplots/my ybar legend/.style={ legend image code/.code={% \path[##1,/tikz/.cd,bar width=3pt,yshift=-0.2em,bar shift=0pt] plot coordinates {(0cm,0.8em) (2*\pgfplotbarwidth,0.6em)};% } } } \tikzset{tikzschrift/.style={font=\small}} \newcommand{\balkenbreite}{1.2cm} % Balkenbreite für Balkendiagramme \begin{document} \begin{tikzpicture}[tikzschrift] \begin{axis}[ybar=10pt, % Gibt gibt Balkendiagramm vor. vor my ybar legend,% eigenen Stil für die Legendenbilder verwenden legend style={draw=none},% keinen Rahmen um Legende axis x line*=bottom, % Sternchen führt dazu, dass kein Pfeil an Achse. axis y line*=left, ymin=0, ymax=600, enlarge y limits=0.0, % Fügt zusätzlichen Abstand oben und unten ein. Angabe in Prozent (bspw. 0.2). enlarge x limits=0.15, symbolic x coords={1920,1930,1940,1950}, x tick label style={text width=2.5cm,align=center}, xtick={data}, ytick={100,200,300,400,500,600}, nodes near coords, width=\linewidth, height=0.3\linewidth, bar width=\balkenbreite, ] \addplot[fill=gray,draw=none]coordinates{(1920,400)(1930,230)(1940,50)(1950,10)}; \addplot[fill=black!20,draw=none]coordinates{(1920,560)(1930,230)(1940,50)(1950,10)}; \legend{Grau, Hellgrau}; \end{axis} \end{tikzpicture} \end{document} ![alt text][1] [1]: http://texwelt.de/wissen/upfiles/EigeneLegende_1.PNG
Klicke auf Einblenden/Ausblenden von Überarbeitungen 4

25 Okt '13, 17:03

esdd's gravatar image

esdd
17.8k304257

Klicke auf Einblenden/Ausblenden von Überarbeitungen 3

25 Okt '13, 17:00

esdd's gravatar image

esdd
17.8k304257

Klicke auf Einblenden/Ausblenden von Überarbeitungen 2
Bild eingefügt

24 Okt '13, 23:10

esdd's gravatar image

esdd
17.8k304257

Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

24 Okt '13, 23:06

esdd's gravatar image

esdd
17.8k304257