我需要您帮助我绘制下图。我认为它被称为堆积条形图。
答案1
使用此包可以轻松生成此类图表pgfplots
。请参阅下面的示例。有关ybar stacked
图表的更多详细信息,请参阅pgfplots 手册。
您还应该考虑将您的ybar stacked
图表转换为xbar stacked
图表(参见pgfplots 手册);这些往往更容易解析。
编辑:我已经厚颜无耻地适应了杰克的详细回答到堆叠 ybar 图中靠近坐标的中心节点在条形图中添加值:
\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}