如何用LaTeX畫柱形圖?
01-22
用 ggplot2 或者 gadfly 畫;後端用 pgf 導出
雖然很多人說不適合,其實也可以試試。
代碼
section{Auto Bar Chart}
pgfplotstableread[col sep=comma]{data.csv}datacsv
egin{tikzpicture}
egin{axis}[
xbar,
y=0.5cm, enlarge y limits={true, abs value=0.75},
xmin=0, enlarge x limits={upper, value=0.15},
xlabel=My value,
ylabel=Label here,
xmajorgrids=true,
ytick=data,
yticklabels from table = {datacsv}{a},
nodes near coords, nodes near coords align=horizontal
]
addplot table [x=b, y=a]
{datacsv};
end{axis}
end{tikzpicture}
a,b
1,4
2,3
3,5
4,1
5,3
效果
有關細節可以參考 pgfplots 文檔:http://texdoc.net/texmf-dist/doc/latex/pgfplots/pgfplots.pdf例子參考 http://tex.stackexchange.net 中的帖子:pgfplots: auto-size chart?。有修改,主要是數據文件改成 csv。其實這個方案還是有優點的。- 以上代碼可以定義成一個宏,然後每次重複使用的時候直接調用就可以了,便於標準化。
- 更新的時候只需要更新數據文件,不需要每次重畫。尤其是不用另啟動一個 matlab 或者 開一個 IPython import matplotlib 或者 開一個 R 或者啟動一個 Excel 來畫一個與之前相同的圖。稍微修改一下就得折騰好大一圈。直接用手頭工具處理完數據,保存成 csv 就好。
- csv 文件可以用各種語言生成,或者就是 excel 另存為。
- 提交給期刊之後,不需要考慮 1200 dpi eps 轉換這種鬼話(真的煩透了,這幫期刊非得抱著遠古發行版不升級……)。尤其 eps 本身也不是什麼好用的圖片格式。
至少我自己打算寫論文的時候用一用。
請點贊;否則, 請至少告訴我錯在哪?
單張圖可用 R 生成 pdf 再 includegraphics。多圖,以至文中有統計數字,可用上 knitr。建議用 R 的 ggplot2 包繪圖。
控制欲強的話可以試試Asymptote,支持在latex里嵌入代碼(但是其實還是分開編譯),支持無縫對接xelatex(尤其是如果你對圖片里的字體有需求,還需要支持中文什麼的的時候)。
推薦閱讀: