我想在乳胶中绘制 Barplot。
这是我的数据.....
姓名 S1 S2
约翰·怀特 912 800
艾伦·凯特 484 400
哈伦·库 309 250
达伦·卡利格 291 280
阿里夫·巴特 192 150
詹姆斯·希尔 142 120
我想要绘制与该图类似的条形图。
答案1
感谢 Henry Menke 的回答并做了一些补充:
\documentclass[margin=5pt]{standalone}
%\pagestyle{empty}% for cropping
\usepackage{tikz,pgfplots,pgfplotstable}
\pgfplotstableread[col sep=semicolon]{
name;S1;S2
john white;912;800
alan ket;484;400
halen koo;309;250
daren kalig;291;280
arif butt;192;150
james seal;142;120
}\loadedtable
\begin{document}
\begin{tikzpicture}
\begin{axis}[
enlarge x limits=0.2,
xbar,nodes near coords,bar width=16pt,bar shift=0pt,
symbolic y coords={john white,alan ket,halen koo,daren kalig,arif butt,james seal},
ytick={john white,alan ket,halen koo,daren kalig,arif butt,james seal},
%x coord trafo/.code={\pgfmathparse{-x}},
xticklabels={0,1000,500,0,500,1000},
]
\addplot[nodes near coords align={left},
draw=blue,fill=blue!25,text=blue]
table[y=name,x expr={-\thisrow{S1}},point meta={-x}] \loadedtable;
\addplot table[y=name,x expr={\thisrow{S2}}] \loadedtable;
\end{axis}
\end{tikzpicture}
\end{document}
答案2
另一个版本的宽度pgfplotstable
和xbar
:
\documentclass{article}
\pagestyle{empty}% for cropping
\usepackage{pgfplots,pgfplotstable}
\pgfplotsset{compat=1.10}
\pgfplotstableread[col sep=semicolon]{
name;S1;S2
john white;912;800
alan ket;484;400
halen koo;309;250
daren kalig;291;280
arif butt;192;150
james seal;142;120
}\loadedtable
\begin{document}
\begin{tikzpicture}
\begin{axis}[
enlarge x limits=0.2,
xbar,nodes near coords,bar width=16pt,bar shift=0pt,
symbolic y coords={john white,alan ket,halen koo,daren kalig,arif butt,james seal},
ytick={john white,alan ket,halen koo,daren kalig,arif butt,james seal},
]
\addplot table[y=name,x expr={-\thisrow{S1}},point meta={x*(-1)}] \loadedtable;
\addplot table[y=name,x expr={\thisrow{S2}}] \loadedtable;
\end{axis}
\end{tikzpicture}
\end{document}
有一个错误point meta
。一旦我引入修饰符,它就会被取代。