어떤 방식으로든 플롯 영역보다 큰 막대의 값을 표시하고 싶습니다. 아마도 막대 내부 또는 플롯 영역 경계 위에 레이블을 두는 것일 수 있습니다. 이 경우에는 (b, 7)
플롯 영역을 "떠나는" 막대에 대한 레이블만 필요하다는 점에 유의하세요 . 나는 원해요:(c, 6)
나는 가지고있다:
nodes near cords
나는 및 옵션을 가지고 놀았 point meta=explicit symbolic
지만 지금까지는 운이 없었습니다.
\begin{tikzpicture}
\begin{axis}[
ybar,
symbolic x coords={a, b, c},
xtick=data,
ymax=5,
% nodes near coords,
% nodes near coords align={vertical},
% point meta=explicit symbolic
]
\addplot coordinates {(a, 3) (b, 7)[7] (c, 1) };
\addplot coordinates {(a, 2) (b, 4) (c, 6)[6] };
\addplot coordinates {(a, 4) (b, 1) (c, 3) };
\end{axis}
\end{tikzpicture}
답변1
이는 수정을 통해 달성할 수 있습니다.이 답변. 작동 방식에 대한 자세한 내용은 코드의 주석을 살펴보시기 바랍니다.
% used PGFPlots v1.14
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
% create a variable to store the `ymax' value
\pgfmathsetmacro{\ymax}{5}
\begin{axis}[
ybar,
symbolic x coords={a, b, c},
xtick=data,
% use the previously created variable here
ymax=\ymax,
% (this i just added so the outer most bars aren't clipped partially)
enlarge x limits={0.2},
% -----------------------------------------------------------------
% we store the *original* y value in a variable ...
visualization depends on={rawy \as \rawy},
% ... which value should be shown in the `nodes near coords' ...
nodes near coords={\pgfmathprintnumber\rawy},
% ... and we want to limit the range of the bars to the axis limits
restrict y to domain*={
\pgfkeysvalueof{/pgfplots/ymin}:\pgfkeysvalueof{/pgfplots/ymax}
},
% ---------------------------------------------------------------------
% now we create a style for the `nodes near coords' which is dependend
% on the value
% (adapted from <http://tex.stackexchange.com/a/141006/95441>)
% (#1: the THRESHOLD after which we switch to a special display)
nodes near coords greater equal only/.style={
% define the style of the nodes with "small" values
small value/.style={
/tikz/coordinate,
},
every node near coord/.append style={
check for small values/.code={
\begingroup
% this group is merely to switch to FPU locally.
% Might be unnecessary, but who knows.
\pgfkeys{/pgf/fpu}
\pgfmathparse{\pgfplotspointmeta<#1}
\global\let\result=\pgfmathresult
\endgroup
%
% simplifies debugging:
%\show\result
%
\pgfmathfloatcreate{1}{1.0}{0}
\let\ONE=\pgfmathresult
\ifx\result\ONE
% AH: our condition 'y < #1' is met.
\pgfkeysalso{/pgfplots/small value}
\fi
},
check for small values,
},
},
% asign a value to the new style which is the threshold at which
% the `small value' style is used.
% Of course in this case it should be the `\ymax' value
nodes near coords greater equal only=\ymax,
% -----------------------------------------------------------------
]
\addplot coordinates {(a, 3) (b, 7) (c, 1)};
\addplot coordinates {(a, 2) (b, 4) (c, 6)};
\addplot coordinates {(a, 4) (b, 1) (c, 3)};
\end{axis}
\end{tikzpicture}
\end{document}