在标记附近显示标记标签并且不在ybar间隔图中居中

Fernando César 09/23/2015. 1 answers, 217 views
pgfplots bar-chart

我正在做一个带竖线(ybar)的图形,其中每个竖线不代表数字(1),而是一个类([-0.5,0.5])。

我希望x轴上的刻度标签出现在刻度标记附近,因此标记每个间隔/班级的限制,而不是它们实际出现在标签中心的方式。 我怎样才能做到这一点?

我的代码:

  \ {的DocumentClass文章}   %---------------------------------- tikz   \ usepackage {pgfplots}%来打印图表  \ pgfplotsset {COMPAT = 1.8}  %    \ {开始}文件  \开始{数字}    \定心    \ {开始} tikzpicture      \ begin {axis} [        % 一般        ybar间隔,       仅缩放轴,       高度= 0.5 \文本宽度,       宽度= \文本宽度,        ylabel = {点数},        xlabel = {}变化,        xticklabel style = {         旋转= 90,         锚=东,        },       小xtick = { -  6,...,6},        enlargelimits =假,        ]        \ addplot表[          X =等级,          Y =值,        ] { 等级值  -7 0  -6 0  -5 3  -4 1  -3 2  -2 15  -1 11  0 179  1 8  2 1  3 0  4 1  5 2  6 0  7 0        };      \ {端轴}    \ {端} tikzpicture  \ {端数字}  \ {端文档} 

图表:

ybar图

1 Answers


Gonzalo Medina 09/24/2015.

您可以将标签应用到标签上。 不过,我想提议你,另一种方法是将标签作为间隔呈现。 下面我显示了两种选择:

\documentclass{article}

% ---------------------------------- tikz 
\usepackage{pgfplots}          % to print charts
\usepackage{etoolbox}
\pgfplotsset{compat=1.11}
%


\begin{document}

\begin{tikzpicture}
    \begin{axis} [
      % general
      ybar interval,
      scale only axis,
      height=0.5\textwidth,
      width=\textwidth,
      ylabel={Dots numbers},
      xlabel={Variation},
      x tick label as interval=true,
      xticklabel={
$[\pgfmathprintnumber{\tick},\pgfmathprintnumber{\nexttick}\pgfmathparse{int(\tick)}\ifnum\pgfmathresult=6\relax]\else)\fi$
        },
      xtick=data,
      xticklabel style={
        rotate=90,
        anchor=east,
      },
      minor xtick={-6,...,6},
      enlargelimits=false,
      ]
      \addplot table [
        x=grade,
        y=value,
      ] {
grade   value
-7  0
-6  0
-5  3
-4  1
-3  2
-2  15
-1  11
0   179
1   8
2   1
3   0
4   1
5   2
6   0
7   0
      };
    \end{axis}
\end{tikzpicture}


\begin{tikzpicture}
    \begin{axis} [
      % general
      ybar interval,
      scale only axis,
      height=0.5\textwidth,
      width=\textwidth,
      ylabel={Dots numbers},
      xlabel={Variation},
      xticklabel style={
        rotate=90,
        anchor=south east,
        yshift=0.5*\pgfplotbarwidth
      },
      minor xtick={-6,...,6},
      enlargelimits=false,
      ]
      \addplot table [
        x=grade,
        y=value,
      ] {
grade   value
-7  0
-6  0
-5  3
-4  1
-3  2
-2  15
-1  11
0   179
1   8
2   1
3   0
4   1
5   2
6   0
7   0
      };
    \end{axis}
\end{tikzpicture}
\end{document} 

在这里输入图像描述

2 comments
Fernando César 09/24/2015
谢谢。 我想到了第一种方法,但是(没有看到它)看起来并不容易阅读。 但是,由于每个间隔的最后一个值重复出现,因此该特定解决方案存在问题:-6出现在两个类别中。 即使纠正了[-7,-6 [,[ - 6,-5 [等],最后的间隔类别也必须不同(关闭这个集合,[6,7]。这可能吗?我也是奇怪的是,这种特定的风格(YBAR间隔)没有解决这个盒子的自动化问题(我想总有改进的空间!)
Gonzalo Medina 09/24/2015
@FernandoCésar是的,这是可能的。 请看我更新的答案。

Related questions

Hot questions

Language

Popular Tags