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

论坛 期权论坛 期权     
Stata连享会   2019-5-13 12:11   17889   0
[h2][/url][/h2]
编译:张晓明 (中国人民大学);连玉君(中山大学)
Stata 连享会: 知乎 | 简书 | 码云
下载 dofile: 连享会-十幅经典图形绘制.do (可右击另存,亦可在线查看)   
[url=http://mp.weixin.qq.com/s?__biz=MzAwMzk4ODUzOQ==&mid=2247485104&idx=1&sn=8c47b6a91d36cd81fc57f9b9cdd550b6&chksm=9b338be4ac4402f2e2b7358a827202258691bdd76d656d07eca27ce50905f1d47dd6042e0071&scene=21#wechat_redirect]python 爬虫与文本分析专题-现场班

特别说明
文中包含的链接在微信中无法生效。请点击本文底部左下角的
  1. 【阅读原文】
复制代码
,转入本文
  1. 【简书版】
复制代码
相关推文: 连享会-数据可视化系列推文
Source: https://www.surveydesign.com.au/tipsgraphs.html该网站提供了几十种 Stata 图形的绘制方法 (dofile)

https://www.surveydesign.com.au/tipsgraphs.html 提供了几十种 Stata 图形的绘制方法
[h2]1. 散点图:附加密度函数图和拟合线(Scatter Plot with Regression Results)[/h2]附加密度函数和拟合曲线的散点图能够更好地看清样本的概率分布,同时能够表示出参数估计的置信区间。

F1_Scatter_distribution
    1. *-文件夹设定
    复制代码
    1. cd D:\
    复制代码
    1. mkdir myfigs
    复制代码
    1. cd D:\myfigs  // 后文输出的图形自从存储于此处
    复制代码

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

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

    1. gen weight2 = weight^2
    复制代码
    1. regress mpg weight weight2
    复制代码
    1. predict fit
    复制代码
    1. predict se , stdp
    复制代码

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

    1. *-保存图片
    复制代码
    1. graph export "F1_Scatter_distribution.png", ///
    复制代码
    1.       replace width(506) height(376)
    复制代码
[h2]2. 三变量比例图 (triplot)[/h2]三变量比例图可以显示出三个变量之间的复杂的组合关系,三个变量比例的取值范围为1~100。

F2_triplot
    1. *----------------
    复制代码
    1. *-F2 三变量比例图
    复制代码
    1. *----------------
    复制代码

    1. * Plots 3 variables (proportions or percentages)
    复制代码
    1. * the total of each to equal either 1 or 100
    复制代码

    1. ssc install triplot, replace  // 下载命令
    复制代码

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

    1. list
    复制代码

    1. triplot a1  a2  a3,  ///
    复制代码
    1.     mlabel(name) mlabcolor(black) mcolor(blue) ///
    复制代码
    1.     mlabsize(*0.9) max(100) ///
    复制代码
    1.     title("Opinion a1 a2 a3")
    复制代码

    1. //保存图片
    复制代码
    1. graph export "F2_triplot.png", ///
    复制代码
    1.       replace width(506) height(376)
    复制代码
[h2]3. 点图:图示政策效果(Stripplot)[/h2]如果将本例中的纵轴分组变量换成年份,则这幅图可以在倍分法回归分析之前,图示政策效果。

F3_triplot - 图示双重差分\倍分法政策效果
    1. *--------
    复制代码
    1. *-F3 点图 图示政策效果
    复制代码
    1. *--------
    复制代码

    1. ssc install stripplot, replace // 下载并更新命令
    复制代码
    1. help stripplot // 查看帮助文件
    复制代码

    1. sysuse bplong, clear
    复制代码
    1. egen group = group(age sex), label
    复制代码

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

    1. //保存图片
    复制代码
    1. graph export "F3_triplot.png", ///
    复制代码
    1.       replace width(531) height(394)
    复制代码
[h2]4. 雷达图\蜘蛛网图 (Radar Plot, Spider plots)[/h2]雷达图在市场营销和管理学中应用较为广泛,主要用于呈现某个对象的各方面特征的均衡度,正所谓 “尺有所短寸有所长”。

F4_radar_plot-雷达图\蜘蛛网图
    1. *-------------------      
    复制代码
    1. *-F4 雷达图\蜘蛛网图
    复制代码
    1. *-------------------
    复制代码

    1. ssc install radar, replace //下载外部命令
    复制代码
    1. help radar //查看帮助文件
    复制代码

    1. sysuse auto, clear
    复制代码
    1. sort price
    复制代码

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

    1. //保存图片   
    复制代码
    1. graph export "F4_radar_plot.png", ///
    复制代码
    1.       replace width(431) height(394)
    复制代码
[h2]5. 快捷诊断图(Sixplot)[/h2]快捷诊断图针对一个变量提供了六幅分析性的、描述性的图片

image.png
    1. *--------------
    复制代码
    1. *-F5 快捷诊断图
    复制代码
    1. *--------------
    复制代码

    1. *-Goal: Displays six diagnostic and descriptive graphs for a single variable
    复制代码

    1. ssc install sixplot //下载命令
    复制代码

    1. sysuse uslifeexp.dta
    复制代码
    1. sixplot le_male
    复制代码

    1. //保存图片
    复制代码
    1. graph export "F5_sixplot.png", ///
    复制代码
    1.       replace width(431) height(394)
    复制代码
[h2]6. 箱形图 (Box Plot)[/h2]箱形图又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。在各种领域也经常被使用,常见于品质管理。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。

image.png
    1. *-----------      
    复制代码
    1. *-F6 箱形图
    复制代码
    1. *-----------
    复制代码

    1. sysuse nlsw88, clear
    复制代码

    1. clonevar wagelog10 = wage
    复制代码
    1. replace  wagelog10 = log10(wagelog10)
    复制代码

    1. mylabels 0(10)40 , myscale(log10(@)) local(labels)
    复制代码

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

    1. //保存图片
    复制代码
    1. graph export "F6_box_plot.png", ///
    复制代码
    1.       replace width(431) height(394)
    复制代码
[h2]7. 小提琴图(Violin Plot)[/h2]小提琴图 (Violin Plot) 用于显示数据分布及其概率密度。这种图表结合了箱形图和密度图的特征,主要用来显示数据的分布形状。中间的黑色粗条表示四分位数范围,从其延伸的幼细黑线代表 95% 置信区间,而白点则为中位数。

小提琴图
    1. *------------   
    复制代码
    1. *-F7 小提琴图
    复制代码
    1. *------------
    复制代码

    1. ssc install vioplot // 下载外部命令
    复制代码
    1. help vioplot // 查看帮助文件
    复制代码

    1. sysuse auto, clear
    复制代码

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

    1. //保存图片   
    复制代码
    1. graph export "F7Violin_plot.png", ///
    复制代码
    1.       replace width(431) height(394)
    复制代码
[h2]8. 热图绘制(Heat Map)[/h2]热图通过平面二维坐标加上不同区域颜色的变化表达了三维信息,热图中横坐标与纵坐标给出了数据的特征,**热图的颜色表示了该数据在整体中的概率密度分布。 **

热图
    1. *------------  
    复制代码
    1. *-F8 热图绘制
    复制代码
    1. *------------
    复制代码

    1. ssc install spgrid, replace
    复制代码

    1. ssc install spkde, replace
    复制代码

    1. ssc install mylabels, replace //下载外部命令
    复制代码

    1. sysuse "auto.dta", clear
    复制代码
    1. set more off
    复制代码

    1. summarize price mpg
    复制代码
    1. clonevar x = mpg
    复制代码
    1. clonevar y = price
    复制代码
    1. replace x = (x-0)/(50-0)
    复制代码
    1. replace y = (y-0)/(20000-0)
    复制代码

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

    1. * 1. Generate a 100x100 grid
    复制代码

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

    1. * 2. Estimate the bivariate probability density function
    复制代码

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

    1. use "2D-Kde.dta", clear
    复制代码

    1. merge 1:1 _n using xy.dta
    复制代码

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

    1. graph export "F8Heat_Map.png", replace width(431) height(394)
    复制代码
[h2]9. 棘状图绘制(Spine Plot)[/h2]棘状图的原理和条件密度图非常相似,都展示了给定某个自变量的情况下因变量的概率分布,但是棘状图首先对连续型的自变量进行了离散化处理,然后再离散区间内计算因变量的条件分布。除此之外,棘状图还兼顾了自变量的分布,在横轴方向上以不同宽度的矩形表示自变量的分布密度。

棘状图
    1. *--------------
    复制代码
    1. *-F9 棘状图绘制
    复制代码
    1. *---------------
    复制代码

    1. sysuse auto, clear
    复制代码

    1. replace rep78=0 if missing(rep78)
    复制代码

    1. bysort foreign rep78 : gen N   = _N
    复制代码
    1. bysort foreign       : gen Na1 = (N/_N)*100
    复制代码

    1. by foreign : gen N1 = string(Na1,"%5.2f") +"%"
    复制代码

    1. label define kk 0 "missing",
    复制代码
    1. label values rep78 kk
    复制代码

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

    1. graph export "F9Spine_Plot.png", ///
    复制代码
    1.       replace width(431) height(394)
    复制代码
[h2]10. 中心条形图(Centred Bar Plot)[/h2]中心条形图经常被用在社会学统计分析中,中心的条块经常用来显示不同层次或年龄群体在横坐标对应的分类中的频率。

中心条形图
    1. *----------------
    复制代码
    1. *-F10 中心条形图
    复制代码
    1. *----------------
    复制代码

    1. ssc install cbarplot, replace
    复制代码

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

    1. reshape long freq, i(levels) j(kind) string
    复制代码

    1. *-绘图
    复制代码
    1. cbarplot levels kind [fw=freq], percent(levels) mlabsize(*.6)
    复制代码

    1. *-保存图片
    复制代码
    1. graph export "F10Centred_Bar_Plot.png", ///
    复制代码
    1.       replace width(431) height(394)
    复制代码
下载 dofile: 连享会-十幅经典图形绘制.do (可右击另存,亦可在线查看)
[h3]关于我们[/h3]
  • 【Stata 连享会(公众号:StataChina)】由中山大学连玉君老师团队创办,旨在定期与大家分享 Stata 应用的各种经验和技巧。
  • 公众号推文同步发布于 CSDN-Stata连享会 、简书-Stata连享会 和 知乎-连玉君Stata专栏。可以在上述网站中搜索关键词
    1. Stata
    复制代码
    1. Stata连享会
    复制代码
    后关注我们。
  • 点击推文底部【阅读原文】可以查看推文中的链接并下载相关资料。
  • Stata连享会 精彩推文1   || 精彩推文2
[h3]联系我们[/h3]
  • 欢迎赐稿:  欢迎将您的文章或笔记投稿至
    1. Stata连享会(公众号: StataChina)
    复制代码
    ,我们会保留您的署名;录用稿件达
    1. 五篇
    复制代码
    以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
  • 意见和资料:  欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。
  • 招募英才:  欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
  • 联系邮件:  StataChina@163.com
[h3]往期精彩推文[/h3]


欢迎加入Stata连享会(公众号: StataChina)[h2]一起学空间计量……[/h2][url=http://mp.weixin.qq.com/s?__biz=MzAwMzk4ODUzOQ==&mid=2247485064&idx=1&sn=58e05c5ef029356ddfe71cb6defefd4b&chksm=9b338bdcac4402caebd7ff2e33af05ad0133351e277040f5d365a3da2fdbf2d6036fe75f9789&scene=21#wechat_redirect][/url]
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:190
帖子:39
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP