# Tips - User Graphs

This selection of graphs have been prepared by different users over time.

Click the + Expand button below each graph to explore the corresponding code/script for each.

Other user written graph sites can be found at:

- UCLA's Institute for digital research and education (IDRE) list of Nick Cox graphs.
- UCLA's Institute for digital research and education (IDRE) list of ATS Consultants' graphs.
- StataCorp's Stata graphs.

## Violin Plot

Requires:violin plotvioplotTo downloadvioplottype the following on the Stata command line:ssc install vioplot

To run the example: copy the following into a do file and runsysuse 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)

## Sequence Plot

sequence plotRequires:sqTo downloadsqtype the following on the Stata command line:ssc install sqTo run the example: copy the following into a do file and runuse http://www.wzb.eu/~kohler/ado/youthemp.dta, clear reshape long st, i(id) j(order) sqset st id order sqindexplot, scheme(vg_palec)

## asciiplot

asciiplot

Requires:asciiplot

To downloadasciiplottype the following on the Stata command line:

ssc install asciiplot

To run the example: copy the following into a do file and run

asciiplot

## strippplot

strippplot

Requires:stripplot

To downloadstripplottype the following on the Stata command line:

ssc install stripplot

To run the example: copy the following into a do file and run

sysuse census, clear

local abbrev ///

AK AL AR AZ CA CO CT DE FL GA HI IA ///

ID IL IN KS KY LA MA MD ME MI MN MO ///

MS MT NC ND NE NH NJ NM NV NY OH OK ///

OR PA RI SC SD TN TX UT VA VT WA WI WV WY

gen abbrev = ""

tokenize "`abbrev'"

qui forval i = 1/50 {

replace abbrev = "``i''" in `i'

}

set scheme s1color

stripplot medage, stack ms(Sh) msize(*3.5) width(0.5) ///

mla(abbrev) mlabpos(0) mlabsize(*.9) ysc(off) plotregion(lstyle(none))

## strippplot

strippplotAnother example of the use of striplot. Requires:stripplotTo downloadstripplottype the following on the Stata command line: ssc install stripplot To run the example: copy the following into a do file and run

sysuse auto, clear gen pipe = "|" stripplot price, over(rep78) box(barw(0.3)) ms(none) mla(pipe) boffset(0.3) From the Statalist: Nick cox 15/10/2010

## strippplot

strippplotAnother example of the use of striplot. Requires:stripplotTo downloadstripplottype the following on the Stata command line: ssc install stripplot To run the example: copy the following into a do file and run

sysuse auto, clear gen pipe = "|" stripplot mpg, ms(none) mlabpos(0) mlabel(pipe) mlabsize(*2) stack From striplot help: Nick cox

## strippplot

strippplotAnother example of the use of striplot. Requires:stripplotTo downloadstripplottype the following on the Stata command line: ssc install stripplot To run the example: copy the following into a do file and run

sysuse auto, clear stripplot mpg, over(rep78) stack h(0.5) bar(lcolor(red)) From striplot help: Nick cox

## strippplot

strippplotAnother example of the use of striplot. Requires:stripplotTo downloadstripplottype the following on the Stata command line: ssc install stripplot The data (Challenger shuttle O-ring damage) can be obtained from: http://www.stata.com/bookstore/swsdl.html To run the example: copy the following into a do file and run

use shuttle.dta, clear logit damage temp predict pre stripplot pre, over(temp) stack ms(sh) height(0.4) /// title("Challenger shuttle O-ring damage") ylabel(,alt labsize(2)) /// addplot(mspline temp pre, bands(20)) From striplot help: Nick cox

## strippplot

strippplotAnother example of the use of striplot. Requires:stripplotTo downloadstripplottype the following on the Stata command line: ssc install stripplot To run the example: copy the following into a do file and run

sysuse bplong, clear egen group = group(age sex), label stripplot bp*, bar over(when) by(group, compact col(1) note("")) /// ysc(reverse) subtitle(, pos(9) ring(1) nobexpand bcolor(none) /// placement(e)) ytitle("") xtitle(Blood pressure (mm Hg)) From striplot help: Nick cox

## ciplot

ciplotExample of the use of ciplot. Requires:cipplotTo downloadciplottype the following on the Stata command line:ssc install ciplotTo run the example: copy the following into a do file and run

webuse citytemp, clear ciplot heatdd cooldd, by(division) xla(, ang(45))From ciplot help: Nick cox

## Venn diagram using venndiag

Venn diagram using venndiag

Requires:venndiagTo downloadvenndiagtype the following on the Stata command line:ssc install venndiagTo run the example below copy the following into a do file and runclear input hayfever eczema asthma freq 1 0 0 31088 1 1 0 9863 0 1 0 43522 0 1 1 9258 0 0 1 35299 1 0 1 11024 1 1 1 6200 0 0 0 345262 end list expand freq venndiag asthma eczema hayfever

## Venn diagram - using pvenn

Venn diagram - using pvenn

Requires:pvenn

To downloadpvenntype the following on the Stata command line:

ssc install pvenn

To run the example below copy the following into a do file and runclear input hayfever eczema asthma freq 1 0 0 31088 1 1 0 9863 0 1 0 43522 0 1 1 9258 0 0 1 35299 1 0 1 11024 1 1 1 6200 0 0 0 345262 end list expand freq pvenn asthma eczema hayfever

## triplot

triplot

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

Requires:triplot

to downloadtriplottype the following on the Stata command line:

ssc install triplot

To run the example below copy the following into a do file and run

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 , mlab(name) mlabcolor(black) mcolor(blue) ///

mlabsize(*0.9) max(100) title("Opinion a1 a2 a3")

## catplot

__catplot__

Plots categorical variables

Requires:

**catplot**

Plot categorical variables

To download

**catplot**type the following on the Stata command line:

**ssc install catplot**

To run the example below copy the following into a do file and run

**sysuse auto, clear**

catplot bar rep78, by(foreign) percent(foreign)

catplot bar rep78, by(foreign) percent(foreign)

catplotPlots categorical variables - Requires: catplot to download this program type the following on the Stata command line (if not already loaded):ssc install catplotTo run the example: copy the following into a do file and runsysuse auto, clear catplot rep78, over(for) stack asyvars perc(for) /// blabel(bar, position(center) format(%3.1f)) /// legend(off)

## catplot

catplotPlots categorical variables - Requires: catplot to download this program type the following on the Stata command line (if not already loaded):ssc install catplotTo run the example: copy the following into a do file and runclear all set more off input quest str25 q a1 a2 a3 a4 a5 a6 1 "Question 1" 0 2 37 45 12 4 1 "Benchmark Q1" 2 5 25 47 17 4 2 "Question 2" 1 37 2 40 17 3 2 "Benchmark Q2" 2 5 25 47 4 17 3 "Question 3" 1 2 40 37 17 3 3 "Benchmark Q3" 2 5 25 47 17 4 4 "Question 4" 1 2 37 17 3 40 4 "Benchmark Q4" 2 5 47 25 17 4 end sort quest q gen q_sum=_n label define kk 1 q1 2 b1 3 q2 4 b2 5 q3 6 b3 7 q4 8 b4 label value q_sum kk reshape long a, i(quest q) j(data) label var data "Question No." expand a split q replace q2=substr(q2,2,1) if length(q2)>1 catplot data, over(q1, gap(40) label(labgap(5))) /// over(q2 ) stack asyvars perc(q) /// blabel(bar, size(1) position(center)orient(vert) format(%4.1f)) /// legend( /// label(1 "Missing") /// label(2 "Never") /// label(3 "Rarely") /// label(4 "Occasionaly") /// label(5 "Mostly") /// label(6 "Always") rows(1) keygap(0) symxsize(7) bexpand /// span size(small)) /// ytitle("Percentage") exit

## spine

__tabplot__

Plots categorical variables in the from of a table

Requires:

**tabplot**

to download

**catplot**type the following on the Stata command line:

**ssc install tabplot**

To run the example below copy the following into a do file and run

**sysuse auto, clear**

tabplot for rep78, percent(foreign) showval(offset(0.05) format(%2.1f))

tabplot for rep78, percent(foreign) showval(offset(0.05) format(%2.1f))

__spine__

Plots width proportional to frequency

Requires:

**spineplot**

to download

**spineplot**type the following on the Stata command line:

**ssc install spineplot**

To run the example below copy the following into a do file and run

**sysuse auto, clear**

spineplot foreign rep78, xti(frequency, axis(1)) ///

xla(0(10)60, axis(1)) xmti(1/69, axis(1))

spineplot foreign rep78, xti(frequency, axis(1)) ///

xla(0(10)60, axis(1)) xmti(1/69, axis(1))

spine

Plots width proportional to frequency Requires:spineplot to downloadspineplottype the following on the Stata command line:ssc install spineplot

To run the example below copy the following into a do file and run 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)

## Density Plot

__cycleplot__

Plots the values for each period vertically

Requires:

**cycleplot**

to download

**cycleplot**type the following on the Stata command line:

**ssc install cycleplot**

For the example below get the data (Co2 data) from: http://cdiac.ornl.gov/ftp/ndp001/maunaloa.co2

To run the example below copy the following into a do file and run

**mvdecode m1-m12 , mv(-99.99=.)**

reshape long m, i(year) j(month)

cycleplot m month year, mylabels(`c(Months)') xlabel(, angle(45))

reshape long m, i(year) j(month)

cycleplot m month year, mylabels(`c(Months)') xlabel(, angle(45))

__sliceplot__

Spreads out the graph over a number of rows; to aid reading the graph

Requires:

**sliceplot**

to download

**sliceplot**type the following on the Stata command line:

**ssc install sliceplot**

For the example below get the data (Co2 data) from: http://cdiac.ornl.gov/ftp/ndp001/maunaloa.co2

To run the example: copy the following into a do file and run

**mvdecode m1-m12 , mv(-99.99=.)**

reshape long m, i(year) j(month)

sliceplot line month year, slices(4)

reshape long m, i(year) j(month)

sliceplot line month year, slices(4)

__cpyxplot__

Plots the cross product of the variables indicted in command

Requires:

**cpyxplot**

to download

**cpyxplot**type the following on the Stata command line:

**ssc install cpyxplot**

To run the example: copy the following into a do file and run

**sysuse auto, clear**

cpyxplot for \rep78 mpg turn length, graphregion(color(ltblue))

cpyxplot for \rep78 mpg turn length, graphregion(color(ltblue))

__beamplot__

The seasaw way of looking at the data

Requires:

**beamplot**

to download

**beamplot**type the following on the Stata command line:

**ssc install beamplot**

To run the example: copy the following into a do file and run

**sysuse auto, clear**

beamplot mpg, by(foreign) over(rep78)

beamplot mpg, by(foreign) over(rep78)

__surface__

3d plot

Requires:

**surface**

to download

**surfacet**type the following on the Stata command line:

**ssc install surface**

To run the example: copy the following into a do file and run

**use surf3,clear**

set more off

surface x y z, orient(xzy) saving(s3d)

set more off

surface x y z, orient(xzy) saving(s3d)

__hangroot__

Distribution checking graph

Requires:

**hangroot**

to download

**hangroot**type the following on the Stata command line:

**ssc install hangroot**

To run the example: copy the following into a do file and run

**sysuse nlsw88, clear**

gen ln_w = ln(wage)

reg ln_w grade age ttl_exp tenure

predict resid, resid

hangroot resid, bar

gen ln_w = ln(wage)

reg ln_w grade age ttl_exp tenure

predict resid, resid

hangroot resid, bar

__byhist__

Draws a binary variable next to each other for each bin width

Requires:

**byhist**

to download

**byhist**type the following on the Stata command line:

**ssc install byhist**

To run the example: copy the following into a do file and run

**sysuse auto, clear**

byhist mpg, by(foreign)

byhist mpg, by(foreign)

__bihist__

Draws a binary variable; one going up and the other going down, for each bin width

Requires:

**byhist**

to download

**bihist**type the following on the Stata command line:

**ssc install bihist**

To run the example: copy the following into a do file and run

**sysuse auto, clear**

byhist mpg, by(foreign)

byhist mpg, by(foreign)

__plotmatrix__

Display the values of a matrix using twoway area

Requires:

**plotmatrix**

to download

**plotmatrix**type the following on the Stata command line:

**ssc install plotmatrix**

To run the example: copy the following into a do file and run

**sysuse auto**

reg price mpg trunk weight length turn, nocons

mat regmat = e(V)

plotmatrix, m(regmat) c(red) ylabel(,angle(0))

reg price mpg trunk weight length turn, nocons

mat regmat = e(V)

plotmatrix, m(regmat) c(red) ylabel(,angle(0))

__full_palette__

Displays a palette of Stata's graph colors, along with their names and RGB numbers

Requires:

**full_palette**

to download

**full_palette**type the following on the Stata command line:

**ssc install full_palette**

To run the example: copy the following into a do file and run

**full_palette**

__parea__

(Windows only) Allows the use of patterns to fill in areas under graphs

Requires:

**parea**

to download

**parea**type the following on the Stata command line:

**ssc install parea**

To run the example: copy the following into a do file and run

**sysuse auto, clear**

twoway parea d w, sort pattern(pattern9) || ///

parea l w if w<=3600, sort pattern(pattern6) || ///

parea l w if w>=3600, sort pattern(pattern4) ,legend(rows(1))

twoway parea d w, sort pattern(pattern9) || ///

parea l w if w<=3600, sort pattern(pattern6) || ///

parea l w if w>=3600, sort pattern(pattern4) ,legend(rows(1))

__spkde__

Requires:

**spgrid, spkde & spmap**

to download

**these programs**type the following on the Stata command line (if not already loaded):

**ssc install spgrid**

and then

**ssc install spkde**

and then

**ssc install spmap**

Also remember to download the following dataset:

**Italy-OutlineCoordinates.dta**

(from where

**spmap**is downloaded) or use the following

**net get spmap.pkg**

**Italy-DataPoints.dta**

(from where

**spkde**is downloaded) or use the following

**net get spkde.pkg**

To run the example: copy the following into a do file and run

set more off

spgrid using "Italy-OutlineCoordinates.dta", ///

resolution(w10) unit(kilometers) ///

cells("GridCells.dta") ///

points("GridPoints.dta") ///

replace compress dots

use "Italy-DataPoints.dta", clear

spkde dcvd95 pop95 using "GridPoints.dta", ///

xcoord(xcoord) ycoord(ycoord) ///

bandwidth(fbw) fbw(100) dots ///

saving("Kde.dta", replace)

use "Kde.dta", clear

generate ratio = dcvd95_lambda / pop95_lambda * 1000

spmap ratio using "GridCells.dta", ///

id(spgrid_id) clnum(20) ///

fcolor(Rainbow) ocolor(none ..) ///

legend(off)

Density Plot Requires:spgrid, spkde, spmap & mylabelsto downloadthese programstype the following on the Stata command line (if not already loaded):ssc install spgridand thenssc install spkdeand thenssc install spmapand thenssc install mylabels*------------------------------------------------ * 1. Normalize variables in the range [0,1]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* 2. Generate a 100x100 gridspgrid, shape(hexagonal) xdim(100) /// xrange(0 1) yrange(0 1) /// dots replace /// cells("2D-GridCells.dta") /// points("2D-GridPoints.dta")* 3. Estimate the bivariate probability density functionspkde using "2D-GridPoints.dta", /// xcoord(x) ycoord(y) /// bandwidth(fbw) fbw(0.1) dots /// saving("2D-Kde.dta", replace)* 4. Draw the density plotuse "2D-Kde.dta", clear recode lambda (.=0) spmap lambda using "2D-GridCells.dta", /// id(spgrid_id) clnum(20) fcolor(Rainbow) /// ocolor(none ..) legend(off) /// point(data("xy.dta") x(x) y(y)) /// freestyle aspectratio(1) /// xtitle(" " "Mileage (mpg)") /// xlab( `XLAB') /// ytitle(" " "Price ({c S|}US)") /// ylab(`YLAB', angle(0)) exit

## sixplot

**Plot estimates with confidence limits**

__eclplot__

Requires:

**eclplot, parmby & sencode**

to download

**these programs**type the following on the Stata command line (if not already loaded):

**ssc install eclplot**

and then

**ssc install parmby**

and then

**ssc install sencode**

To run the example: copy the following into a do file and run

**sysuse auto, clear**

tabulate rep78, gene(rep78_)

parmby "regress mpg rep78_*, noconst", by(foreign) label norestore

sencode label if parm!="_cons", gene(parmlab)

label var parmlab "Repair record 1978"

label var estimate "Mean mileage (mpg)"

eclplot estimate min95 max95 parmlab, eplot(bar) estopts(barwidth(0.25)) ///

supby(foreign, ///

spaceby(0.25)) xscale(range(0 6)) xlabel(1(1)5, angle(30))

tabulate rep78, gene(rep78_)

parmby "regress mpg rep78_*, noconst", by(foreign) label norestore

sencode label if parm!="_cons", gene(parmlab)

label var parmlab "Repair record 1978"

label var estimate "Mean mileage (mpg)"

eclplot estimate min95 max95 parmlab, eplot(bar) estopts(barwidth(0.25)) ///

supby(foreign, ///

spaceby(0.25)) xscale(range(0 6)) xlabel(1(1)5, angle(30))

__Radar Plot__

Requires:

**radar**

to download

**this program**type the following on the Stata command line (if not already loaded):

**ssc install radar**

To run the example: copy the following into a do file and run

**sysuse auto, clear**

radar make turn mpg trunk if foreign, title(Nice Radar graph) ///

lc(red blue green) lw(*1 *2 *4) r(0 12 14 18 50)

radar make turn mpg trunk if foreign, title(Nice Radar graph) ///

lc(red blue green) lw(*1 *2 *4) r(0 12 14 18 50)

**Produces a Bland-Altman plot when there is a relationship between paired differences and their average**

__Batplot__

Requires:

**batplot**

to download

**this program**type the following on the Stata command line (if not already loaded):

**ssc install batplot**

To run the example: copy the following into a do file and run

**sysuse auto, clear**

batplot mpg turn, title(Agreement between mpg and turn) ///

info valabel(make) notrend xlab(26(4)38) moptions(mlabp(9))

batplot mpg turn, title(Agreement between mpg and turn) ///

info valabel(make) notrend xlab(26(4)38) moptions(mlabp(9))

__Chernoff faces__

Requires:

**chernoff**

to download

**this program**type the following on the Stata command line (if not already loaded):

**net install gr0038**

To run the example: copy the following into a do file and run

**sysuse auto, clear**

drop if rep78==.

keep in 41/55

chernoff, isize(rep78) hdark(mpg) hslant(mpg) fline(weight) ///

order(foreign price) saving(c:/face1)

chernoff, isize(rep78,0) hdark(mpg) hslant(mpg) fline(weight) ///

nose(price) legend(2 nolabel) cols(3) rhalf saving(c:/face2)

generate s = 1+runiform()

chernoff, isize(rep78,. 6) hdark(mpg) hslant(mpg) fline(weight) ///

bvert(_null_) inote(make) iscale(s) saving(mygraph, replace)

drop if rep78==.

keep in 41/55

chernoff, isize(rep78) hdark(mpg) hslant(mpg) fline(weight) ///

order(foreign price) saving(c:/face1)

chernoff, isize(rep78,0) hdark(mpg) hslant(mpg) fline(weight) ///

nose(price) legend(2 nolabel) cols(3) rhalf saving(c:/face2)

generate s = 1+runiform()

chernoff, isize(rep78,. 6) hdark(mpg) hslant(mpg) fline(weight) ///

bvert(_null_) inote(make) iscale(s) saving(mygraph, replace)

__Trellis plot__

Requires:

**trellis**

to download

**this program**type the following on the Stata command line (if not already loaded):

**ssc install trellis**

To run the example: copy the following into a do file and run

**webuse nhanes2f, clear**

trellis,by(health region) f(graph box copper zinc iron) fopt(legend(off) ///

ylab(50 175 300) yscale(r(50,310))) sr(2) sc(2) ///

singleopt(legend(on ring(0) pos(1) col(1) bm(tiny) ///

symx(*0.2) keyg(*0.2) region(m(zero) lw(none))) ///

yscale(r(50,310))) name(trellis)

trellis,by(health region) f(graph box copper zinc iron) fopt(legend(off) ///

ylab(50 175 300) yscale(r(50,310))) sr(2) sc(2) ///

singleopt(legend(on ring(0) pos(1) col(1) bm(tiny) ///

symx(*0.2) keyg(*0.2) region(m(zero) lw(none))) ///

yscale(r(50,310))) name(trellis)

**Combines graphs**

__grcomb__

Requires:

**grcomb**

to download

**this program**type the following on the Stata command line (if not already loaded):

**ssc install grcomb**

To run the example: copy the following into a do file and run

**webuse nhanes2f, clear**

grcomb graph box copper zinc iron , v(1)

grcomb graph box copper zinc iron , v(1)

**Makes it easier to draw pie charts of categorical frequencies**

__pieplot__

Requires:

**plieplot**

to download

**this program**type the following on the Stata command line (if not already loaded):

**ssc install pieplot**

To run the example: copy the following into a do file and run

**sysuse auto, clear**

pieplot rep78 foreign, sum plabelsubopts(size(*2)) ///

pie(1, color(red*2)) pie(2, color(red)) ///

pie(3, color(red*0.7)) pie(4, color(red*0.5)) ///

pie(5, color(red*0.3)) legend(row(1)) name(pieplot)

pieplot rep78 foreign, sum plabelsubopts(size(*2)) ///

pie(1, color(red*2)) pie(2, color(red)) ///

pie(3, color(red*0.7)) pie(4, color(red*0.5)) ///

pie(5, color(red*0.3)) legend(row(1)) name(pieplot)

Displays six diagnostic and descriptive graphs for a single variable Requires:sixplotsixplotto downloadthis programtype the following on the Stata command line (if not already loaded):ssc install sixplotTo run the example: copy the following into a do file and runsysuse uslifeexp.dta

sixplot le_male

## zmap

zmap graphs (or maps) binned values of a variable z with respect to two variables x and y treated as Cartesian coordinates. Requires:zmapzmapto downloadthis programtype the following on the Stata command line (if not already loaded):ssc install zmapTo run the example: copy the following into a do file and run

webuse nlswork, clear egen mean = mean(ln_wage), by(age grade) egen tag = tag(age grade) label variable mean "mean ln wage" summarize ln_wage if !missing(age, grade), detail zmap mean age grade if tag, breaks(.993 1.166 1.361 1.641 /// 1.964 2.275 2.456) ms(S ..) ysc(on) xsc(on) yla(0/18, ang(h)) /// ytitle(`: var label grade') mxla(15(5)45) note("") /// color(blue blue*0.5 orange*0.5 orange)

## netplot

An important part of what makes social network analysis so fascinating to broad audiences is the possibility of visualization of networks. netplot produces a network plot Requires:netplotnetplot to downloadthis programtype the following on the Stata command line (if not already loaded):ssc install netplot To run the example: copy the following into a do file and run //create a random network with 10 nodes //(code adopted from the helpfile of stata2pajek)clear set obs 200 gen i=int(uniform()*10)+1 gen j=int(uniform()*10)+1 contract i j, freq(strength) drop if i==j sort i j drop if strength <3 // --> keep only the "stronger" links// Draw the networknetplot i j, type(circle) label

## cmogram

cmogramcmogram graphs the means, medians, frequencies, or proportions of yvar, conditional on xvar. Requires: cmogram to download this program type the following on the Stata command line (if not already loaded):ssc install cmogramTo run the example: copy the following into a do file and runsysuse auto, clear cmogram mpg weight, histopts(bin(5)) lfit cutpoint(3250) /// lineat(3000 3250 3500) controls(price)

## ellip

ellipellip calculates a confidence ellipse from the elliptically distributed variables yvar and xvar, and then graphs the confidence ellipse using graph twoway line. Requires: ellip to download this program type the following on the Stata command line (if not already loaded):ssc install ellipTo run the example: copy the following into a do file and runsysuse auto, clear ellip mpg weight, by(foreign, total legend(off)) /// total tlabel(Total as a by-group) plot(scatter mpg weight)

## drarea

drareaMultiple graphics are produced in Stata by the rule "last drawn first seen". So the objects that are drawn last are the ones that are observed. The implication of this principle is that when overlapping two rarea graphs the overlapping area is hidden by the second rarea graph. This command drarea overlays two range area plots by merging the two colours and hence highlighting the true overlap. Requires: drarea to download this program type the following on the Stata command line (if not already loaded):ssc install drareaTo run the example: copy the following into a do file and runsysuse sp500, clear generate high2 = high+15*uniform() generate low2 = low+15*uniform() drarea high low high2 low2 date in 1/20

## linkplot

linkplotlinkplot plots yvarlist versus xvar such that data points are linked (i.e. connected) within groups defined by distinct values of linkvar. For example, with paired data it might be desired to link each pair, or with panel data it might be desired to link observations within each panel. Requires: linkplot to download this program type the following on the Stata command line (if not already loaded):ssc install linkplotTo run the example: copy the following into a do file and runclear input /// A B id 13.2 14.0 1 8.2 8.8 2 10.9 11.2 3 14.3 14.2 4 10.7 11.8 5 6.6 6.4 6 9.5 9.8 7 10.8 11.3 8 8.8 9.3 9 13.3 13.6 10 end rename A wearA rename B wearB reshape long wear, string i(id) j(j) encode j, gen(material) linkplot material wear, link(id) yla(1 2, valuelabel) /// ysc(r(0.5 2.5)) yla(, ang(h))

## tddens

tddensBivariate kernel density graphs over a grid Requires: tddens to download this program type the following on the Stata command line (if not already loaded):ssc install tddensTo run the example: copy the following into a do file and runsysuse auto, clear tddens price mpg, s b

## Lexis diagram

Lexis diagramTwo dimensional diagram that is used to represent events (such as births or deaths) that occur to individuals belonging to different cohorts. Requires: evhistplot to download this program type the following on the Stata command line (if not already loaded):ssc install evhistplotTo run the example: copy the following into a do file and runclear webuse set /// "http://oldsite.soziologie-blossfeld.de/eha/stata/do_files/Data/" webuse rrdat1.dta * Convert event times to dates. Are arbitrarily set to fifteenth day of month. foreach var of varlist tstart tb te tmar ti tfin { gen `var'date = mdy(mod(`var' - 1, 12) + 1, 15, (`var' - 1) / 12 + 1900) local labvar : variable label `var' la var `var'date "`labvar'" format %d `var'date } * replace with missing where observation is actually right censored replace tmardate = . if tmar == 0 la var tmardate "Date of marriage" replace tfindate = . if tfin == ti * Lexis plot with date of marriage and job starts labelled * according to rank evhistplot tstartdate tmardate, id(id) start(1jan1940) /// end(31dec1981) birth(tbdate) evtype(noj) nsub(20) xtitle(Calendar time)

## Deviation plots

Deviation plotsPlots each data point relative to some appropriate mean with a marker symbol and a spike connecting marker and mean. Requires: devnplot to download this program type the following on the Stata command line (if not already loaded):ssc install devnplotTo run the example: copy the following into a do file and runwebuse systolic, clear version 9: anova systolic drug disease drug*disease predict predict predict residual, residual devnplot systolic drug disease, level(predict) superplines

## Statplot

StatplotStatplot is an alternative to graph hplot, graph hbar and graph dot. It allows grouping on the axis and other options. Requires: statplot to download this program type the following on the Stata command line (if not already loaded):ssc install statplotTo run the example: copy the following into a do file and runwebuse systolic, clear sysuse census, clear statplot marriage divorce, over(region) s(sum) xpose varnames

## mm_plot

mm_plotmm_plot is a user written Mata graph command that allow you to plot a Mata matrix. Requires: moremata to download this program type the following on the Stata command line (if not already loaded):ssc install moremataTo run the example: copy the following into a do file and runset more off mata: for(i=0;i<=2*pi()*1000; i++) { a=(i/1000)*cos(i/1000) a1=(i/1000)*sin(i/1000) if(i==0) { za=a za1=a1 } else { za=za\a za1=za1\a1 } c=za,za1 } mata: mm_plot(c) end

## cdfplot

cdfplotcdfplot plots the sample cumulative distribution function. Distributions can be compared within subgroups defined by a second variable. The best fitting normal (Gaussian) model may be superimposed over the sample c.d.f. Requires: cdfplot to download this program type the following on the Stata command line (if not already loaded):ssc install cdfplotTo run the example: copy the following into a do file and runsysuse auto,replace cdfplot length [fw=rep78], by(foreign) norm saving(mygraph,replace)

## riskplot

riskplotThe riskplot is a graphical aid to the investigation of the contributions of risk factors on outcomes of interest. (see SJ Vol 10 No 1) Requires: riskplot to download this program type the following on the Stata command line (if not already loaded):ssc install risk,all(Thealloption ensures that the data (data_riskplot.dta) will also be downloaded) To run the example: copy the following into a do file and runuse c:/data/data_riskplot.dta, clear //path may need to be changed set scheme sj riskplot depr1995 sex sclass if Idep91==1 [pw=wg], path obs /* */ thick(20) c(. red) title(Risk plot for subjects with mild /* */ or severe depression at baseline) subtitle((results using /* */ sampling weights), margin(b+5)) scale(0.9) ytitle(depression /* */ score 1995) saving(riskplotWG, replace)

## aaplot

aaplotaaplot graphs a scatter plot for yvar versus xvar with linear and/or quadratic fit superimposed. The equation(s) and R-square statistics of the fits shown are also shown at the top of the graph. Requires: aaplot to download this program type the following on the Stata command line (if not already loaded):ssc install aaplotTo run the example: copy the following into a do file and runsysuse auto, clear gen gpm = 1000 / mpg label var gpm "Gallons per thousand miles" aaplot gpm weight, name(g1)

## hull plot

hull plotcvxplot makes a scatterplot and draw convex hulls of a group of points in two-dimensional space. Each hull is defined by two lines joining the bottom-left point to the top-right point. Requires: cvxplot to download this program type the following on the Stata command line (if not already loaded):ssc install cvxhullTo run the example: copy the following into a do file and runsysuse auto, clear gen foreign1=foreign label define for 1 For 0 Dom label values foreign1 for cvxhull mpg weight, group(foreign) hulls(2) /// scat(mlab(foreign1) mlabpos(c) msym(i) ysc(r(0,60)))

## Pareto plot

Pareto plotpdplot produces a Pareto dot plot Requires: pdplot to download this program type the following on the Stata command line (if not already loaded):ssc install pdplotTo run the example: copy the following into a do file and runsysuse auto, clear pdplot mpg

## Centred bar plots

Centred bar plotsCentred bar plots shows absolute or relative frequencies of yvar as centred bar plots. Centred bar plots are often used in archaeology to show frequencies of different kinds of artefact at different levels or ages, sometimes under the title of battleship curves or battleship diagrams. Requires: cbarplot to download this program type the following on the Stata command line (if not already loaded):ssc install cbarplotTo run the example: copy the following into a do file and runclear 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)

## heatmap

heatmapGraphs a heatmap. Requires: cbarplot to download this program type the following on the Stata command line (if not already loaded):ssc install hmapTo run the example: copy the following into a do file and run// producing the data clear all set obs 64 generate n=int(uniform()*10) generate x=1+int((_n-1)/8) generate y=1+mod((_n-1),8) label define xlab 1 "one" 2 "two" 7 "seven" 8 "eight" label define ylab 3 "three" 4 "four" 5 "five" 6 "six" label value x xlab label value y ylab table y x [fw=n] hmap x y n

## simpplot

simpplot// Plot describing p-values from a simulation by comparing //nominal significance levels with the coverages Requires: simpplot to download this program type the following on the Stata command line (if not already loaded):ssc install simpplotprogram drop _all program define sim, rclas drop _all set obs 500 gen x = rchi2(2) ttest x=2 in 1/50 return scalar p50 = r(p) ttest x=2 return scalar p500 = r(p) end set seed 12345 simulate p50=r(p50) p500=r(p500), /// reps(5000) : sim label var p50 "N=50" label var p500 "N=500" simpplot p50 p500, main1opt(mcolor(red)) /// main2opt(mcolor(blue))

## Fractal

Fractal// Generates fractals Requires: fractal to download this program type the following on the Stata command line (if not already loaded):ssc install fractalclear fractal ,hs(0,.2,.3,.40,.5,.618,.75,.85,1.0) /// vs(0,.25,.2,.35,.25,.516,.366,.42,.2) hr(0 100) /// vr(0 200) iter(3) savegraph graph combine _frctl1.gph _frctl2.gph _frctl3.gph

## Motion Chart

Motion ChartA "Motion Chart" is a scatter plot for time-series data. You can hit "play" and see how the points move over time. They were made famous, for example, by Hans Rosling's internet videos: http://www.gapminder.org/ "Example of motion graph for code below" Requires: motionchart to download this program: Open Stata viewer type the following in:net describe motionchart, from(http://kk-adofiles.googlecode.com/hg)type help motionchart Read the pharagraph on setting the Adobe Flash Player sysuse bplong.dta , clear generate year = 2007+when decode sex , gen(gender) motionchart patient year bp sex using "my_test.html" in 115/125 , /// replace title("Blood Pressure") /// subtitle("Example motionchart: created in Stata with motionchart.ado")

## binscatter

binscatterbinscatter generates binned scatterplots, and is optimized for speed in large datasets. Binned scatterplots provide a non-parametric way of visualizing the relationship between two variables. With a large number of observations, a scatterplot that plots every data point would become too crowded to interpret visually. binscatter groups the x-axis variable into equal-sized bins, computes the mean of the x-axis and y-axis variables within each bin, then creates a scatterplot of these data points. Requires: binscatter to download this program type the following on the Stata command line (if not already loaded):ssc install binscatterclear all sysuse nlsw88, clear keep if inrange(age,35,44) & inrange(race,1,2) scatter wage tenure , title("Graph produced by Scatter") name(g1) // The scatter was too crowded to be easily interpetable. The binscatter is cleaner, try a quadratic fit. binscatter wage tenure, line(qfit) xscale(range(0,25)) /// xlabel(0(5)25) ylabel(0(10)40) yscale(range(0,40)) /// title("Graph produced by Binscatter") name(g2) graph combine g1 g2

## missingplot

missingplot// Generates a graph of missing values Requires: missingplot to download this program type the following on the Stata command line (if not already loaded):ssc install missingplotwebuse nlsw88, clear missingplot, var labels mlabcolor(blue ..)

## sparkline

sparkline// sparkline graphs sparkline-type plots for one or more y // variables against a single x variable. Typically, plots for // different y variables or for different subsets of one y variable // are stacked vertically into one image. Requires: sparkline to download this program type the following on the Stata command line (if not already loaded):ssc install sparklinewebuse grunfeld, clear sparkline invest year, by(company) extremes

Program that helps with specification of regular linear and logarithmicProgram that helps with specification of regular linear and logarithmic axis scales, ranges and tick listsRequires: regaxis to download this program type the following on the Stata command line (if not already loaded):ssc install regaxisTo run the example: copy the following into a do file and runsysuse auto, clear regaxis rep78, cycle(.5) singleok margin(0.5) lrange(yrange) lticks(ylabs) regaxis weight, include(0) lticks(xlabs) scatter rep78 weight, yscale(range(`yrange')) ylabel(`ylabs') xlabel(`xlabs')

**
**

## Program that helps with specification of label positions

Program that helps with specification of label positionsRequires: egenmore to download this program type the following on the Stata command line (if not already loaded):ssc egenmoreTo run the example: copy the following into a do file and runclear all //graph without the egenmore generated label position sysuse auto, clear egen clock = mlabvpos(mpg weight) scatter mpg weight, mlab(make) mlabvpos(clock) name(a1) /// scheme(s1) // look at a suitable matrix // for the egen mlabvpos option matrix z= 11, 1, 12, 11, 1 \ 10, 2, 12, 10, 2 \ 9, 3, 12, 9 ,3 \ /// 8, 4, 6, 8, 4 \ 7, 5 ,6, 7, 5 matrix list z //graph with the egenmore generated label position egen clock2 = mlabvpos(mpg weight), matrix(11 1 12 11 1 \\ /// 10 2 12 10 2 \\ 9 3 12 9 3 \\ 8 4 6 8 4 \\ 7 5 6 7 5) scatter mpg weight, mlab(make) mlabvpos(clock2) name(a2) /// title("Graph using egenmore mlabvpos generated data") /// scheme(s1)