stata绘图指令

作者: pdnbplus | 发布时间: 2024/06/16 | 阅读量: 260

stata绘图指令 -- 潘登同学的stata笔记

绘图概览

Stata 提供的图形种类:

  • twoway 二维图
  • scatter 散点图
  • line 折线图
  • area 区域图
  • lfit 线性拟合图
  • qfit 非线性拟合图
  • histogram 直方图
  • kdensity 密度函数图
  • function 函数图

  • graph matrix 矩阵图
  • graph bar 条形图
  • graph dot 点图
  • graph box 箱形图

    + graph pie 饼图

  • ac 相关系数图

  • pac 偏相关系数图
  • irf 脉冲相应函数图

韦恩图

sysuse nlsw88, clear
pvenn married collgrad south //韦恩图,  R1_regression.do

在这里插入图片描述

折线图

sysuse sp500, clear
// 一根折线图
twoway line    high date       // G2_line.do
// 两根折线图
twoway (line high date) (line low date) 
twoway line high date || line low date   //等价命令
// 更完整的设定
sysuse sp500, clear
twoway (line high date) (line low date)        ///
    ,                                        ///  
    title("图1:股票最高价与最低价时序图", box)  /// //图形标题
    xtitle("交易日期", margin(medsmall))         /// //x轴标题
    ytitle("股票价格")                           /// //y轴标题
    ylabel(900(200)1400) ymtick(##5)             /// //y轴刻度标签
    xlabel(,angle(20))                           /// //x轴刻度标签
    legend(col(1) ring(0) position(7))           /// //图例
    note("资料来源:Stata公司,SP500.dta")       ///
    caption("说明:我做的第一幅Stata图形!")     ///
    saving(mypig.gph, replace)                       //存储图片

graph export G1_mygraph.wmf, replace  //输出为 .wmf 格式  
graph export G1_mygraph.png, replace  //输出为 .png 格式

在这里插入图片描述

sysuse sp500, clear
twoway line high low date  in 1/20, ///
         scheme(s1mono)               ///
         xlabel(,angle(50))           ///
         ylabel(,angle(0) grid)       /// 
         ymtick(##5)                  /// // ##5表示在每隔5个单位加一条刻度线)
         lpattern(solid dash)         ///
         lcolor(green*1.2 black*0.7)  ///
         lwidth(*1.2 *1.3)
graph export "$path\myline.png", replace

在这里插入图片描述

连线图

sysuse sp500, clear
twoway connect high low date  in 1/20, ///
        scheme(s1mono)                  ///
        xlabel(, angle(50))             ///
        ylabel(, angle(0) grid)         ///
        lpattern(solid dash)

在这里插入图片描述

use "nlswork.dta", clear
gen wage = exp(ln_wage)
replace year = year+1900
bysort collgrad year: egen mwage = mean(wage) //D5_egen.do

keep collgrad year mwage
duplicates drop collgrad year, force  // 删除重复值(为了画图时一一对应)

xtset year collgrad
gen diff = D.mwage

twoway  (connect mwage year if collgrad==0)    ///
        (connect mwage year if collgrad==1)    ///
        (connect diff  year), ///
        scheme(s1mono)        ///
        ytitle("Mean Wage")   ///
        ylabel(2(1)10, angle(0) grid) ///
        xlabel(1968(2)1988, grid)     ///
        legend(label(1 "Non College Graduate") ///
                label(2 "College Graduate")     ///
                label(3 "Difference")           ///
                col(1) ring(0) position(11))

在这里插入图片描述

线性拟合图

  • lfit:线性拟合
  • qfit:非线性拟合
sysuse auto, clear
twoway (scatter price weight) (lfit price weight)

在这里插入图片描述

分组线性拟合

sysuse auto, clear
#delimit ; // 用分号代替///的连接作用
sysuse auto, clear ;
twoway (scatter price weight if foreign==1) 
        (lfit price weight if foreign==1)
        (scatter price weight if foreign==0) 
        (lfit price weight if foreign==0)
        , 
        legend(label(1 "Foreign")
                label(2 "")
                label(3 "Demestic")
                label(4 "")
                position(4) ring(0)
                )
        ;
#delimit cr

在这里插入图片描述

使用aaplot标注拟合方程

sysuse auto, clear
gen gpm = 1000/mpg
label var gpm "Gallons per thousand miles"

aaplot gpm weight

aaplot gpm weight,  ///
        lopts(lcolor(black*0.8) lpattern(dash)) ///
        aformat(%04.3f)     ///
        bformat(%06.4f)     ///
        rmseformat(%4.3f)   ///
        scheme(s1mono)

在这里插入图片描述

直方图

sysuse nlsw88, clear

histogram age, frequency xlabel(34(1)46)  //频数
histogram age, fraction  xlabel(34(1)46)  //频率 
histogram age, percent   xlabel(34(1)46)  //占比=频率*100

// 附加正态分布密度曲线
histogram wage, normal
// 附加核密度函数曲线
histogram wage, kdensity

在这里插入图片描述

在这里插入图片描述

// 长条的显示
histogram wage, gap(50)  // 长条间距缩小为默认值的 50%

histogram wage, gap(90) scheme(s1mono)  //黑白图形    

histogram wage, gap(60) scheme(s1mono)  ///
    fcolor(white) lcolor(black) lwidth(*0.8)

在这里插入图片描述

// 附加标签
histogram age, freq  addlabels

在这里插入图片描述

分组绘制直方图

sysuse nlsw88, clear
histogram wage, by(collgrad)  ///
        gap(80) scheme(s1mono) percent

在这里插入图片描述

将两个组的直方图绘制在一个图中

sysuse nlsw88,clear
byhist wage, by(collgrad) frac  ///
        tw(legend(row(2) ring(0) position(1)))

在这里插入图片描述

byhist wage, by(collgrad) density ///
           tw1(color(black))          ///
           tw2(color(blue))           ///
           tw(legend(label(1 "Otherwise")  ///
                     label(2 "College Graduate") ///
              col(1) ring(0) pos(1)))

在这里插入图片描述

// 核密度函数图
twoway (kdensity wage if collgrad==0)     /// 
        (kdensity wage if collgrad==1),    /// 
        xtitle("Hourly wage")              ///
        legend(label(1 "Otherwise")        ///
                label(2 "College Graduate") ///
                col(1) ring(0) pos(3)) 

在这里插入图片描述

sysuse nlsw88, clear

bihist wage, by(collgrad) frac  tw(legend(col(1)))

在这里插入图片描述

函数图

twoway function y = x, aspect(1) // 横纵比1:1

twoway function y = -2*x^2 + 8*x + 10

twoway function y = -2*x^2 + 8*x + 10, range(-10 10)

twoway function y = -2*x^2 + 8*x + 10, range(-10 10) ///
    xline(2, lpattern(dash) lcolor(blue))

在这里插入图片描述

在这里插入图片描述

分布的密度函数

twoway ///
    (function Normal = normalden(x), range(-8 8))   ///
    (function    t20 = tden(20,x), range(-8 8))   ///
    (function    t3  = tden(3 ,x), range(-8 8))   ///
    (function    t1  = tden(1 ,x), range(-8 8)),  ///
    legend(col(1) position(1) ring(0) size(*1.1)) ///
    xtitle("t distribution", margin(t+2) size(*1.3))  

添加特殊字符和文字

help graph text
// 在图片中添加希腊字母
twoway function y = gammaden(3/2,2,0,x), range(0 10) ///
        title("{&chi}{sup:2}(3) {bf}distribution")

在这里插入图片描述

twoway ///
    (function chi1 = gammaden(1/2,2,0,x), range(0 10))  ///
    (function chi3 = gammaden(3/2,2,0,x), range(0 10)), ///
    legend(off) ///
    subtitle("{&chi}{sup:2} distribution",margin(t+2) size(*1.3)) ///
    text(1.5 0.4 "{&chi}{sup:2}(1)") ///
    text(0.3 0.4 "{&chi}{sup:2}(3)") 

在这里插入图片描述