標籤:

Stata 畫圖有什麼美化技巧?

Stata原生的圖真丑。。。


一張好看的圖最首要的目標是功能性的,即準確且有效地傳達信息。大家在畫圖之前都應該讀一讀這篇 An Economist』s Guide to Visualizing Data。文中講到了一張準確且有效的圖應該具備的三個要素:

  1. Show the data. 數據應當是一張圖裡最重要的部分,要以最清晰的方式展示出來。
  2. Reduce the clutter. 一切冗雜的、讓讀者分心的東西都應該去掉,例如厚重的參考線、不必要的標籤符號、裝飾性的陰影等等。
  3. Integrate the text and the graph. 一張好的圖應該單獨拿出來就能讀懂,不需要讀者回到正文中尋找解釋。

作者給了一些例子,把一些論文或者報告里用統計軟體默認生成的「丑」圖進行了改造,這裡不多講,建議大家去看看。

所以無論是什麼軟體,要畫出好看的圖,首先要讓內容好看,然後再來解決視覺上的好看。

-

具體到 Stata,正如 @扣小米 所說,默認的背景色確實是硬傷。學名叫做 light bluish gray 淡灰中帶藍? 除了背景色之外,如果直接 Stata 默認的圖而不加修飾的話也不太符合上面的三要素。

幸好有個叫 scheme 的東西,相當於自定義模板。個人比較喜歡的兩套 scheme,plottig 和 plotplain,一個是對 Stata 的單色模板的改進,一個是仿 ggplot 風格。

另外,我做了個非常簡約的 scheme 自用,qlean,還很不完善,歡迎 fork :)


謝邀 @慧航

正好剛看了一篇論文是用 stata 做的圖的,先貼出來。

為什麼我覺得看起來還可以。。。是不是看多了就習慣了。。

stata 的圖不太好的原因主要就是在那個默認的說不上來什麼顏色的底色上(青綠色?)。

改底色有三個辦法:

第一個是執行完 do 文檔,圖片顯示出來後,在圖片上點右鍵,然後可以選擇編輯圖片(macbook 版的是點 preferences),裡面可以在 scheme 里調背景顏色,默認的是 s2color。不過調完之後,需要在下次執行 do 文檔的時候才會生效,而且是今後一直生效,要想用默認顏色需要自己再改回來。

第二個是在寫 do 文檔的時候在圖表的語言後面option 里加上 graphregion(fcolor(green)) 之類改顏色的語句,效果一樣。

第三個是用 scheme 語句,比如 twoway scatter ......, scheme(s2manual)

關於 scheme 的用法:Stata 14 help for schemes

scheme 的介紹:Fight Entropy: Prettier graphs with less headache: use schemes in Stata

來展示一下不同背景顏色的圖(細節字體什麼的我就不調整了,各位將就著看一下吧):

這是默認顏色(s2color)的圖:

這是 s2mono 的圖:

這是 economist 的散點圖:

這是 s2manual 的散點圖:

相應的如果是柱狀圖可以調柱子的顏色,散點圖可以調整點的顏色。

其實看來看去好像還是黑白的比較順眼。

最後留下兩個鏈接,裡面都帶圖例的 code,很好用:

UCLA介紹 stata 繪圖的頁面:Stata Library: Graph Examples

Stata 花樣作圖介紹,包括調顏色、各種組合、各種形態:Tip - Stata Graphs


我就記得一個option,scheme(economist)可以畫出經濟學人風格的圖~


1.brewscheme命令有與R類似的效果

ssc inst brewscheme,replace
brewscheme, scheme(ggtest2) const(orange) cone(blue) consat(20) ///
scatst(ggplot2) scatc(5) piest(ggplot2) piec(6) barst(ggplot2) barc(2) ///
linest(ggplot2) linec(2) areast(ggplot2) areac(5) somest(ggplot2) somec(24) ///
cist(ggplot2) cic(3)

sysuse auto.dta, clear

#d;
tw lowess mpg weight, || scatter mpg weight if rep78 == 1 ||
scatter mpg weight if rep78 == 2 || scatter mpg weight if rep78 == 3 ||
scatter mpg weight if rep78 == 4 || scatter mpg weight if rep78 == 5,
scheme(ggtest2) legend(order(2 "Repair Record = 1"
3 "Repair Record = 2" 4 "Repair Record = 3"
5 "Repair Record = 4" 6 "Repair Record = 5"));
#d cr

2.可以輸入公式,如aaplot

sysuse auto, clear
gen gpm = 1000 / mpg
label var gpm "Gallons per thousand miles"
aaplot gpm weight, name(g1)
aaplot gpm weight, lopts(lc(blue)) aformat(%04.3f) bformat(%06.5f) rmseformat(%4.3f) name(g2)
aaplot gpm weight, quadratic qopts(lc(pink)) name(g3)
aaplot gpm weight, both name(g4)
aaplot gpm weight, both backdrop(lfitci gpm weight, color(gs12)) name(g5)

3.plotregion(none)可以去除青色背景

4.set scheme s1color 要比默認的s2color更好(Nick.J.Cox)

5.Stata可以在iphone上運行,其他不可以


私以為這就是stata的風格,而且你投稿的時候一看就是stata做的。


弄到 R 裡頭上 ggplot 吧


改用R。。。。。。。原諒我不會stata。。。。。。。


Stata 14 help for schemes


stata的圖上好像不能寫數學公式。所以也就是預處理數據的時候看看效果。最後肯定還是要用matlab製圖。


都不是那麼 ideal,不過看效果,STATA 比 R 好看,雖然好多人認為R簡潔, 不過 這兩個都是主流,用哪個都可以。STATA 更基礎些吧,一般學經濟的都會 , 好多人用R 一個最主要的原因就是 R是免費的!!! 開源的!!!,而且是現在的主流之一,以前看過有趣的說法: R主要就是一群統計專業的同時比較精通計算機編程之類的瘋子們搞的......


用matlab吧,真心感覺stata的圖無力吐槽


刪掉stata下個R吧。。


我覺得改變它原來的配色就會好一點。

這是原圖:

將底色換成白色,核密度線換成黑色,正態分布線換成forest green的虛線,直方條換成eggshell色,效果如下:

用R軟體畫圖如下:

R的圖更直接更簡潔咯。


首先你的圖能充分展現你要說明的問題嗎?從來沒覺得圖會丑,只有數據點不符合論點的丑~

其次,你給誰看?學術圈不會有人在乎圖丑吧?給外行人看,人家反正看不懂,你在意要給圖么?放附錄好了,愛看不看~


mark


推薦閱讀:

解釋變數互為因果如何處理?
喜歡的姑娘在學stata 怎麼用stata來送一份與眾不同的生日禮物?
VAR模型/vecm模型殘差自相關怎麼辦?
在利用多值有序響應的 logit 模型或者 probit 模型時,有沒有限制的條件?

TAG:Stata |