標籤:

如何用LaTeX畫柱形圖?


用 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}

數據 data.csv

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。其實這個方案還是有優點的。

  1. 以上代碼可以定義成一個宏,然後每次重複使用的時候直接調用就可以了,便於標準化。
  2. 更新的時候只需要更新數據文件,不需要每次重畫。尤其是不用另啟動一個 matlab 或者 開一個 IPython import matplotlib 或者 開一個 R 或者啟動一個 Excel 來畫一個與之前相同的圖。稍微修改一下就得折騰好大一圈。直接用手頭工具處理完數據,保存成 csv 就好。
  3. csv 文件可以用各種語言生成,或者就是 excel 另存為。
  4. 提交給期刊之後,不需要考慮 1200 dpi eps 轉換這種鬼話(真的煩透了,這幫期刊非得抱著遠古發行版不升級……)。尤其 eps 本身也不是什麼好用的圖片格式。

至少我自己打算寫論文的時候用一用。

請點贊;否則, 請至少告訴我錯在哪?


單張圖可用 R 生成 pdf 再 includegraphics。多圖,以至文中有統計數字,可用上 knitr。建議用 R 的 ggplot2 包繪圖。


控制欲強的話可以試試Asymptote,支持在latex里嵌入代碼(但是其實還是分開編譯),支持無縫對接xelatex(尤其是如果你對圖片里的字體有需求,還需要支持中文什麼的的時候)。


推薦閱讀:

工科生有學習數學分析的必要嗎?
女生工科真的不好找工作嗎?

TAG:LaTeX | 工科生 |