Um einen Pfad weiß zu umranden, zeichnet man den Pfad normalerweise größer und füllt ihn weiß aus. Anschließend kopiert man den ursprünglichen Pfad, der schwarz ausgefüllt ist, darüber. Dadurch wird er besser vom Hintergrund getrennt.
Aber das funktioniert natürlich nicht in pgfplots. Wenn man eine \addplot
weiß eingefärbte Kopie des Diagramms erstellt, die line width=
größer ist als das beabsichtigte Diagramm, wird das Originaldiagramm verschoben, sodass sie sich nicht überlappen können und ein weißer Umriss jedes (schwarzen) Balkens entsteht.
FRAGE 1: Wie erreiche ich, dass pgfplots jeden Balken in einem Balkendiagramm zusätzlich zu seinem schwarzen Umriss (der schwarz bleibt) auch weiß umrahmt?
(FRAGE 2(in den Kommentaren bereits beantwortet): Wie wird der horizontale Abstand zwischen dem ersten Balken und der Y-Achse skaliert?)
Wie macht man das alles beispielsweise in:
\documentclass{standalone}\usepackage{pgfplots,tikz}
\begin{document}\begin{tikzpicture}\pgfplotsset{%
every axis legend/.append style={at={(0.9,0.7)},anchor=south east}}%
\draw[draw=none,fill=black!20]rectangle(13.4,13.4);
\begin{axis}[title={},grid=major,scaled y ticks=false,
bar width=12.34pt,line width=3.2pt,%
enlarge x limits={true,abs value=0.64},
width=428pt,x tick style={line width=2.4pt,draw=black},%
height=428pt,y tick style={line width=2.4pt,draw=black},%
ybar=8pt,%BAR SEPARATION
yticklabel style={/pgf/number format/fixed,/pgf/number format/precision=3},%
xtick=\empty,xtick={1,...,3},xticklabels={%
\textbf{A},%
\textbf{B},%
\textbf{C},%
},legend style={inner xsep=8pt,inner ysep=4pt,line width=2pt,draw=none,minimum height=22pt,column sep=4pt},% remove this to show the legend border
legend image code/.code={\draw[#1](-6pt,-6pt)rectangle(6pt,6pt);}%
]%
\addplot[fill=blue60!,draw=black,
point meta=y,
every node near coord/.style={inner ysep=8pt},
error bars/.cd,y dir=both,
y explicit]table[y error=error]{%
x y error label
1 19.9 2 1
2 38.6 3 2
3 35.2 3 3
};%LEGEND
\legend{\makebox[64pt]{\raisebox{-2pt}{MyLabelGoesHereYes}},}
\end{axis}\end{tikzpicture}\end{document}
bearbeiten: vielleicht kann es über Dekorationen gemacht werden?
Antwort1
Sie können preaction={draw=white, line width=5pt}
die \addplot [...]
Optionen ergänzen, um eine weiße Umrandung zu erhalten:
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar,
axis background/.style={fill=gray},
axis on top
]
\addplot [fill=yellow, draw=black, very thick, preaction={draw=white, line width=5pt}] table {%
x y
1 19.9
2 38.6
3 35.2
};
\end{axis}
\end{tikzpicture}
\end{document}