次の図を描くのにご協力ください。これは積み上げ棒グラフと呼ばれるものだと思います。
答え1
このタイプのグラフはパッケージで簡単に作成できます。例については以下を参照してください。グラフpgfplots
の詳細については、ybar stacked
pgfplots マニュアル。
ybar stacked
また、グラフをグラフに変換することも検討してくださいxbar stacked
(p78を参照)。pgfplots マニュアル); これらは解析が容易になる傾向があります。
編集: 私は恥ずかしげもなく適応したジェイクの非常に詳しい回答に積み上げ縦棒グラフの座標付近のノードを中央に配置するバーに値を追加するには:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotstableread{
1 15 12 03 24 16 19
2 15 12 03 24 16 19
3 15 12 03 24 16 19
4 15 12 03 24 16 19
5 15 12 03 24 16 19
6 15 12 03 24 16 19
}\datatable
\makeatletter
\pgfplotsset{
calculate offset/.code={
\pgfkeys{/pgf/fpu=true,/pgf/fpu/output format=fixed}
\pgfmathsetmacro\testmacro{%
(\pgfplotspointmeta*10^\pgfplots@data@scale@trafo@EXPONENT@y)%
/2*\pgfplots@y@veclength)%
}
\pgfkeys{/pgf/fpu=false}
},
nodes near coords vertically centered/.style={
every node near coord/.append style={
/pgfplots/calculate offset,
yshift=-\testmacro
},
nodes near coords align=center
}
}
\makeatother
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar stacked,%
bar width=15pt,%
legend style={%
at={(0,0)},%
anchor=west,%
at={(axis description cs:1.05,+0.5)}},%
reverse legend,%
xtick={1,2,...,6},%
xticklabels={1,2,3,4,5,6},%
enlarge x limits=0.1,%
enlarge y limits=false,%
ymin=0,%
ymax=100.01,%
ytick={0,10,...,100},%
yticklabels={0\%,10\%,20\%,30\%,40\%,50\%,60\%,70\%,80\%,90\%,100\%},%
xlabel={\textbf{Company}},%
ylabel={\textbf{\% Distribution of efforts}},%
point meta=explicit,
nodes near coords={\pgfmathprintnumber[fixed zerofill,precision=1]{\pgfplotspointmeta}
},
every node near coord/.style={%
check for zero/.code={ %
\pgfmathfloatifflags{\pgfplotspointmeta}{0}{%
\pgfkeys{/tikz/coordinate}%
}{}%
},%
check for zero,%
fill=white,%
fill opacity=0.75,%
text opacity=1,%
font=\scriptsize,%
inner ysep=0.5pt,%
},%
nodes near coords vertically centered,%
]
\addplot table [y=1, meta=1] \datatable;
\addlegendentry{A}
\addplot table [y=2, meta=2] \datatable;
\addlegendentry{B}
\addplot table [y=3, meta=3] \datatable;
\addlegendentry{C}
\addplot table [y=4, meta=4] \datatable;
\addlegendentry{D}
\addplot table [y=5, meta=5] \datatable;
\addlegendentry{E}
\addplot table [y=6, meta=6] \datatable;
\addlegendentry{F}
\end{axis}
\end{tikzpicture}
\end{document}