흰색으로 패스 윤곽을 그리려면 일반적으로 패스를 더 크게 그려 흰색으로 채운 다음 그 위에 검정색으로 채워진 원래 패스를 복사합니다. 이는 배경과 더 잘 분리되기 위한 것입니다.
그러나 이것은 물론 pgfplots에서는 작동하지 않습니다. 의도한 그래프보다 큰 \addplot
흰색으로 칠해진 그래프의 복사본 하나가 있는 경우 line width=
원본 그래프가 이동되어 각 (검은색) 막대의 흰색 윤곽선을 제공하기 위해 겹칠 수 없습니다.
질문 1: pgfplots에서 검은색 윤곽선(검은색으로 남아 있음) 외에 막대 그래프의 각 막대 윤곽선을 흰색으로 표시하려면 어떻게 해야 합니까?
(질문 2(댓글에 이미 답변이 있습니다.): 첫 번째 막대와 Y축 사이의 수평 거리는 어떻게 조정되나요?)
예를 들어, 다음에서는 이 모든 작업을 어떻게 수행합니까?
\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}
편집: 아마도 장식을 통해 할 수 있을까요?
답변1
preaction={draw=white, line width=5pt}
옵션 에 추가하여 \addplot [...]
흰색 윤곽선을 얻을 수 있습니다.
\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}