pgfplots によるグループ化された棒グラフ

pgfplots によるグループ化された棒グラフ

私は次のような pgfplots を使用してグループ化された棒グラフを作成しようとしています。

ここに画像の説明を入力してください

しかし、次のようにバーの上に値を置くことはできません。

ここに画像の説明を入力してください

私のコードは次のとおりです:

\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\usepackage{caption}
\usepackage{polyglossia}
\setdefaultlanguage{portuges}

\begin{document}

\begin{figure}[h]
\makeatletter
\pgfplotsset{
    calculate offset/.code={
        \pgfkeys{/pgf/fpu=true,/pgf/fpu/output format=fixed}
        \pgfmathsetmacro\testmacro{(\pgfplotspointmeta *10^\pgfplots@data@scale@trafo@EXPONENT@y)*\pgfplots@y@veclength)}
        \pgfkeys{/pgf/fpu=false}
    },
    every node near coord/.style={
        /pgfplots/calculate offset,
        yshift=-\testmacro
    }
}
%0 - aramente   1 - Às vezes   2 - Quase sempre   4 - Sempre
\pgfplotstableread{
  %2013-2014    %2012-2013  %2011-2012
0 32        35      20
1 28        45      23
2 30        24      25
3 10        68      70
}\dataset
\begin{tikzpicture}
\begin{axis}[ybar,
        width=12cm,
        height=8cm,
        ymin=0,
        ymax=100,        
        ylabel={Percentagem},
        xtick=data,
        xticklabels = {
            Raramente,
            Às vezes,
            Quase sempre,
            Sempre
            %Category 5,
            %Category 6
        },
        xticklabel style={yshift=-10ex},
        major x tick style = {opacity=0},
        minor x tick num = 1,
        minor tick length=2ex,
        every node near coord/.append style={
                anchor=east,
                rotate=90
        }
        ]
\addplot[draw=black,fill=blue!20, nodes near coords=2013-2014] table[x index=0,y index=1] \dataset; %ano de 2013-2014
\addplot[draw=black,fill=blue!40, nodes near coords=2012-2013] table[x index=0,y index=2] \dataset; %ano de 2012-2013
\addplot[draw=black,fill=blue!60, nodes near coords=2011-2012] table[x index=0,y index=3] \dataset; %ano de 2011-2012
\end{axis}
\end{tikzpicture}
\captionsetup{justification=centerlast, margin=10ex, labelfont=bf, textfont=it, format=plain, labelformat=default, labelsep=endash, font=small, name=Gráfico\,}
\caption{Em sua casa é costume desligar os equipamentos no controlo remoto, deixando-os em standby (modo de “espera”)?}\label{Questao01}

\end{figure}

\end{document}

答え1

nodes near coordsそれ以上カスタマイズせずに単独で実行すると、バーの上に目的のノードが表示されます。

これには、凡例の説明が標準の指示ではなくなるという欠点があります。 がこのようなケースを処理するnodes near coords方法は、おそらく次の例のように を使用することです。pgfplotslegend entries

ここに画像の説明を入力してください

\documentclass{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\usepackage{caption}

\begin{document}
\thispagestyle{empty}

\begin{figure}[h]
%0 - aramente   1 - Às vezes   2 - Quase sempre   4 - Sempre
\pgfplotstableread{
  %2013-2014    %2012-2013  %2011-2012
0 32        35      20
1 28        45      23
2 30        24      25
3 10        68      70
}\dataset
\begin{tikzpicture}
\begin{axis}[ybar,
        width=12cm,
        height=8cm,
        ymin=0,
        ymax=100,        
        ylabel={Percentagem},
        xtick=data,
        xticklabels = {
            \strut Raramente,
            \strut Às vezes,
            \strut Quase sempre,
            \strut Sempre
            %Category 5,
            %Category 6
        },
        %xticklabel style={yshift=-10ex},
        major x tick style = {opacity=0},
        minor x tick num = 1,
        minor tick length=2ex,
        every node near coord/.append style={
                anchor=west,
                rotate=90
        },
        legend entries={2013-2014 ,2012-2013 ,2011-2012 },
        legend columns=3,
        legend style={draw=none,nodes={inner sep=3pt}},
        ]
\addplot[draw=black,fill=blue!20, nodes near coords] table[x index=0,y index=1] \dataset; %ano de 2013-2014
\addplot[draw=black,fill=blue!40, nodes near coords] table[x index=0,y index=2] \dataset; %ano de 2012-2013
\addplot[draw=black,fill=blue!60, nodes near coords] table[x index=0,y index=3] \dataset; %ano de 2011-2012
\end{axis}
\end{tikzpicture}
\captionsetup{justification=centerlast, margin=10ex, labelfont=bf, textfont=it, format=plain, labelformat=default, labelsep=endash, font=small, name=Gráfico\,}
\caption{Em sua casa é costume desligar os equipamentos no controlo remoto, deixando-os em standby (modo de “espera”)?}\label{Questao01}

\end{figure}

\end{document}

ここで、nodes near coordsは個々のバーの値を描画します。 とlegend entries、凡例のカスタマイズを少し組み合わせると、プロットの上部に説明が表示されます。

\strut目盛りラベルでは、すべての目盛りラベルが同じサイズになり (テキストのベースラインの下であっても)、垂直に揃えられることに注意してください(提案してくれた @egreg に感謝します)。

関連情報