数据可视化stata连享会-数据分析与可视化

Stata数据可视化: 十幅精美图形的绘制

2019-05-01  本文已影响168人  stata连享会

连享会-Python爬虫与文本分析现场班 (2019年5月17-19日,太原)

特别说明: 文中包含的链接在微信中无法生效。请点击本文底部左下角的【阅读原文】,转入本文【简书版】。

相关推文: 连享会-数据可视化系列推文


Source: https://www.surveydesign.com.au/tipsgraphs.html
该网站提供了几十种 Stata 图形的绘制方法 (dofile)


https://www.surveydesign.com.au/tipsgraphs.html 提供了几十种 Stata 图形的绘制方法

编译:张晓明 (中国人民大学);连玉君(中山大学)

Stata 连享会: 知乎 | 简书 | 码云

下载 dofile: 连享会-十幅经典图形绘制.do (可右击另存,亦可在线查看)

1. 散点图:附加密度函数图和拟合线(Scatter Plot with Regression Results)

附加密度函数和拟合曲线的散点图能够更好地看清样本的概率分布,同时能够表示出参数估计的置信区间。

F1_Scatter_distribution

*-文件夹设定
cd D:\
mkdir myfigs
cd D:\myfigs  // 后文输出的图形自从存储于此处

*-----------
*- F1 散点图:附加密度函数和拟合曲线图绘制
*-----------

sysuse auto, clear 
version 9.2  //绘制这幅图的时候,需要加这条命令,后续版本的stata绘图命令的语法有所改变
keep if foreign
sort weight

gen weight2 = weight^2
regress mpg weight weight2
predict fit
predict se , stdp

#delimit ;
twoway 
  scatter mpg weight , pstyle(p3) ms(o) ||
  fn weight[3]  - 1000 * normden(x, `=fit[3]' , `=se[3]') ,
    range(`=fit[3] -5' `=fit[3] +5') horiz pstyle(p1) ||
  fn `=fit[3]' , range(`=weight[3]' `=weight[3]-1000*normden(0, se[3])')
    pstyle(p1) ||
  fn weight[17] - 1000 * normden(x, `=fit[17]', `=se[17]') ,
    range(`=fit[17]-5' `=fit[17]+5') horiz pstyle(p1) ||
  fn `=fit[17]', range(`=weight[17]' `=weight[17]-1000*normden(0, se[17])')
    pstyle(p1) ||
  fn weight[21] - 1000 * normden(x, `=fit[21]' , `=se[21]') ,
    range(`=fit[21] -7' `=fit[21] +7') horiz pstyle(p1) ||
  fn `=fit[21]', range(`=weight[21]' `=weight[21]-1000*normden(0, se[21])')
    pstyle(p1) ||
  line fit weight, clwidth(*2) legend(off) 
    ytitle(Miles per gallon) xtitle(Weight)
    title("Scatter with Regression Line and Confidence Interval Densities"
           , size(*0.8) margin(t=0 b=1.5) span) 
;
#delimit cr

*-保存图片
graph export "F1_Scatter_distribution.png", ///
      replace width(506) height(376) 


2. 三变量比例图 (triplot)

三变量比例图可以显示出三个变量之间的复杂的组合关系,三个变量比例的取值范围为1~100。

F2_triplot

*----------------
*-F2 三变量比例图
*----------------

* Plots 3 variables (proportions or percentages) 
* the total of each to equal either 1 or 100

ssc install triplot, replace  // 下载命令

clear
input a1 a2 a3 str10 name 
      10 10  80  John
      80 10  10  Fred
      25 25  50  Jane
      90  5   5  Helen
      0   0 100  Ed
      50 25  25  Kate
      20 60  20  Michael
      25 25  50  Darren
      5  90   5  Samar
end

list

triplot a1  a2  a3,  ///
    mlabel(name) mlabcolor(black) mcolor(blue) ///
    mlabsize(*0.9) max(100) ///
    title("Opinion a1 a2 a3")
    
//保存图片
graph export "F2_triplot.png", ///
      replace width(506) height(376) 


3. 点图:图示政策效果(Stripplot)

如果将本例中的纵轴分组变量换成年份,则这幅图可以在倍分法回归分析之前,图示政策效果。

F3_triplot - 图示双重差分\倍分法政策效果

*--------
*-F3 点图 图示政策效果
*--------

ssc install stripplot, replace // 下载并更新命令
help stripplot // 查看帮助文件

sysuse bplong, clear
egen group = group(age sex), label

#d ;
stripplot bp*, bar over(when) 
   by(group, compact col(1) note("")) 
   yscale(reverse) 
   subtitle(, pos(9) ring(1) nobexpand 
              bcolor(none) placement(e)) 
   ytitle("") 
   xtitle("Blood pressure (mm Hg)") ;
#d cr 

//保存图片
graph export "F3_triplot.png", ///
      replace width(531) height(394) 


4. 雷达图\蜘蛛网图 (Radar Plot, Spider plots)

雷达图在市场营销和管理学中应用较为广泛,主要用于呈现某个对象的各方面特征的均衡度,正所谓 “尺有所短寸有所长”。

F4_radar_plot-雷达图\蜘蛛网图

*-------------------      
*-F4 雷达图\蜘蛛网图
*-------------------

ssc install radar, replace //下载外部命令
help radar //查看帮助文件

sysuse auto, clear
sort price 

#d ;
radar make turn mpg trunk in 1/20,  
   aspect(1) 
   title(Nice Radar graph, size(*0.6)) 
   lc(red blue green)  
   lw(*1 *2 *4) rlabel(0 12 14 18 50) labsize(*0.7) 
   legend(label(1 "mpg-油效(英里/加仑)") 
          label(2 "turn-转弯半径(英尺)")
          label(3 "trunk-后备箱容积(立方英尺)")
          col(1) size(*.8)) ;
#d cr

//保存图片   
graph export "F4_radar_plot.png", ///
      replace width(431) height(394)


5. 快捷诊断图(Sixplot)

快捷诊断图针对一个变量提供了六幅分析性的、描述性的图片

image.png

*-------------- 
*-F5 快捷诊断图
*--------------

*-Goal: Displays six diagnostic and descriptive graphs for a single variable

ssc install sixplot //下载命令

sysuse uslifeexp.dta
sixplot le_male

//保存图片
graph export "F5_sixplot.png", ///
      replace width(431) height(394) 


6. 箱形图 (Box Plot)

箱形图又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。在各种领域也经常被使用,常见于品质管理。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。

image.png

*-----------      
*-F6 箱形图
*-----------

sysuse nlsw88, clear

clonevar wagelog10 = wage
replace  wagelog10 = log10(wagelog10)

mylabels 0(10)40 , myscale(log10(@)) local(labels)

#d ;
graph hbox wagelog10, 
  over(ind, sort(1)) nooutside 
  ytitle("") ylabel(`labels') 
  title("Hourly wage, 1988, woman aged 34-46", span) 
  subtitle(" ") 
  note("Source:1988 data from NLS, U.S. Dept. of Labor, "
       "Bureau of Labor Statistics", span) ;
#d cr 

//保存图片
graph export "F6_box_plot.png", ///
      replace width(431) height(394)


7. 小提琴图(Violin Plot)

小提琴图 (Violin Plot) 用于显示数据分布及其概率密度。这种图表结合了箱形图和密度图的特征,主要用来显示数据的分布形状。中间的黑
色粗条表示四分位数范围,从其延伸的幼细黑线代表 95% 置信区间,而白点则为中位数。

小提琴图

*------------   
*-F7 小提琴图
*------------

ssc install vioplot // 下载外部命令
help vioplot // 查看帮助文件

sysuse auto, clear

vioplot mpg, over(rep78) horizontal name(myplot) ///
   title("Violin Plot of Mileage") ///
   subtitle("By repair record")    ///
   ytitle(Repair Record) ///
   ylab(, angle(horiz))  ///
   scheme(s2mono)

//保存图片   
graph export "F7Violin_plot.png", ///
      replace width(431) height(394) 


8. 热图绘制(Heat Map)

热图通过平面二维坐标加上不同区域颜色的变化表达了三维信息,热图中横坐标与纵坐标给出了数据的特征,**热图的颜色表示了该数据在整体中的概率密度分布。 **

热图

*------------  
*-F8 热图绘制
*------------

ssc install spgrid, replace

ssc install spkde, replace

ssc install mylabels, replace //下载外部命令

sysuse "auto.dta", clear
set more off

summarize price mpg
clonevar x = mpg
clonevar y = price
replace x = (x-0)/(50-0)
replace y = (y-0)/(20000-0)

mylabels 0(10)50, myscale((@-0)/(50-0)) local(XLAB)
mylabels 0(5000)20000, myscale((@-0)/(20000-0)) local(YLAB)
keep x y
save "xy.dta", replace

* 1. Generate a 100x100 grid

spgrid, shape(hexagonal) xdim(100)    ///
xrange(0 1) yrange(0 1)               ///
dots replace                          ///
cells("2D-GridCells.dta")             ///
points("2D-GridPoints.dta")

* 2. Estimate the bivariate probability density function

spkde using "2D-GridPoints.dta",    ///
xcoord(x) ycoord(y)                 ///
bandwidth(fbw) fbw(0.1) dots        ///
saving("2D-Kde.dta", replace)

use "2D-Kde.dta", clear

merge 1:1 _n using xy.dta

twoway (contour p  spgrid_ycoord spgrid_xcoord  if p!=0 , ///
levels(15))                                               ///
(scatter y x, mcolor(black) msize(small) )                ///
,xlab(`XLAB', nogrid) xtitle("Mileage (mpg)")             ///
ylab(`YLAB', nogrid)                                      ///
ytitle("Price $US") plotregion(color(blue))

graph export "F8Heat_Map.png", replace width(431) height(394)


9. 棘状图绘制(Spine Plot)

棘状图的原理和条件密度图非常相似,都展示了给定某个自变量的情况下因变量的概率分布,但是棘状图首先对连续型的自变量进行了离散化处理,然后再离散区间内计算因变量的条件分布。除此之外,棘状图还兼顾了自变量的分布,在横轴方向上以不同宽度的矩形表示自变量的分布密度。

棘状图

*--------------
*-F9 棘状图绘制
*---------------

sysuse auto, clear

replace rep78=0 if missing(rep78) 

bysort foreign rep78 : gen N   = _N
bysort foreign       : gen Na1 = (N/_N)*100

by foreign : gen N1 = string(Na1,"%5.2f") +"%"

label define kk 0 "missing",
label values rep78 kk

spineplot rep78 foreign, ///
   bar1(bcolor(gs14))    ///
   percent missing       ///
   bar2(bcolor(gs11))    ///
   bar3(bcolor(gs8))     ///
   bar4(bcolor(gs5))     ///
   bar5(bcolor(gs2))     ///
   bar6(bcolor(red)) text(N1)

graph export "F9Spine_Plot.png", ///
      replace width(431) height(394)


10. 中心条形图(Centred Bar Plot)

中心条形图经常被用在社会学统计分析中,中心的条块经常用来显示不同层次或年龄群体在横坐标对应的分类中的频率。

中心条形图

*---------------- 
*-F10 中心条形图
*---------------- 

ssc install cbarplot, replace 

clear
input levels freqcores freqblanks freqtools
    25 21  32   70
    24 36  52   115
    23 126 650  549
    22 159 2342 1633
    21 75  487  511
    20 176 1090 912
    19 132 713  578
    18 46  374  266
    17 550 6182 1541
    16 76  846  349
    15 17  182  51
    14 4   51   14
    13 29  228  130
    12 135 2227 729
end

reshape long freq, i(levels) j(kind) string

*-绘图
cbarplot levels kind [fw=freq], percent(levels) mlabsize(*.6)

*-保存图片
graph export "F10Centred_Bar_Plot.png", ///
      replace width(431) height(394)

下载 dofile: 连享会-十幅经典图形绘制.do (可右击另存,亦可在线查看)

连享会-空间计量现场班 (2019年6月27-30日,西安)

关于我们

联系我们

往期精彩推文

点击此处-查看完整推文列表
欢迎加入Stata连享会(公众号: StataChina)
上一篇下一篇

猜你喜欢

热点阅读