Quiero indicar de alguna manera los valores de las barras que son más altas que el área de trazado. Tal vez teniendo la etiqueta dentro de la barra o encima de los límites del área de trazado. Tenga en cuenta que solo quiero una etiqueta para las barras que "salen" del área de trazado, es decir, (b, 7)
y (c, 6)
en este caso.
Deseo:
Tengo:
Estuve jugando con las opciones nodes near cords
y point meta=explicit symbolic
, pero hasta ahora no tuve suerte.
\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}
Respuesta1
Esto se puede lograr modificandoesta respuesta. Para obtener más detalles sobre cómo funciona, consulte los comentarios en el código.
% 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}