緣起
釘子圖和啞鈴圖本質(zhì)是一樣的庄敛,都是每個(gè)對(duì)象包含兩個(gè)端點(diǎn)闰集,將兩個(gè)端點(diǎn)連線沽讹。區(qū)別只是端點(diǎn)數(shù)據(jù)形式的差異,使得釘子圖所有對(duì)象一般有一端是對(duì)齊的武鲁,而啞鈴圖則不用爽雄;釘子圖要么垂直要么水平,而啞鈴圖不用沐鼠。這兩種圖適用于制作:
- 圍繞某個(gè)軸的變化圖(如增長(zhǎng)率變化圖)挚瘟,
- 有最大值和最小值的圖(如每天股票價(jià)格圖和置信區(qū)間圖)叹谁,
- 離散數(shù)據(jù)的分組比較圖,(如不同職業(yè)的分性別的平均收入差異圖和人口金字塔圖)乘盖,
- 制作生命線(如生存時(shí)長(zhǎng)線)焰檩。
R的ggplot2
包中函數(shù)geom_point()
+geom_line()
,或者ggplot2
+ggalt
包中函數(shù)geom_dumbbell()
侧漓,可以制作這類圖锅尘。
STATA常規(guī)的作圖命令,twoway line/scatter
等布蔗,無法制作釘子圖和啞鈴圖藤违。需要專門的命令。這里介紹的是專門作這類圖的命令纵揍。
-
spike
系列命令配合scatter命令可以作出釘子圖或啞鈴圖顿乒。- 包含
spike
、rspike
泽谨、pcspike
三個(gè)命令璧榄。
- 包含
-
cap
系列命令是帶帽子的spike圖,即兩端點(diǎn)添加符號(hào)標(biāo)記吧雹。- 包含
rcap
骨杂、rcapsym
、pccapsym
三個(gè)命令雄卷。
- 包含
-
spikeplot
命令用于專門統(tǒng)計(jì)計(jì)數(shù)頻率和百分比的釘子圖搓蚪。
一、spike系列命令
spike
twoway spike yvar xvar [if] [in] [, options]
- 實(shí)際上是一個(gè)端點(diǎn)是(x,0)丁鹉,一個(gè)端點(diǎn)是(x,y)
- 隱藏的端點(diǎn)y=0妒潭,可以通過
base(#)
設(shè)置成其它值。 -
twoway
的選項(xiàng)揣钦,這里都適用雳灾。下同。
選項(xiàng) | 說明 |
---|---|
vertical | 垂直線冯凹,默認(rèn)值 |
horizontal | 水平線 |
base(#) | 起始值谎亩,默認(rèn)為0 |
- 注意:水平線是由垂直線轉(zhuǎn)置而成的,并不是(0, y)與(x, y)的連線宇姚,而是(0, x)與(y, x)的連線匈庭。下同。
sysuse sp500, clear
list date close change in 1/5
twoway spike change date
twoway spike change date, horizon
twoway line close date || spike change date
rspike -- Range plot with spikes
twoway rspike y1var y2var xvar [if] [in] [, options]
- 每個(gè)x對(duì)應(yīng)兩個(gè)y值空凸,即一個(gè)端點(diǎn)為(x, y1)仰美,另一個(gè)為(x, y2)我注。
-
rspike
與spike
的區(qū)別在于书闸,spiker
的起始值是固定值,而rspike
的起始值是變量y1var
選項(xiàng) | 說明 |
---|---|
vertical | 垂直釘子圖啼止,默認(rèn)值 |
horizontal | 水平釘子圖 |
sysuse sp500, clear
twoway rspike high low date
pcspike -- Paired-coordinate plot with spikes
twoway pcspike y1var x1var y2var x2var [if] [in] [, options]
-
pcspike
與rspike
的區(qū)別在于,rspike
所有對(duì)象的連線的一端是對(duì)齊的兵罢,而pcspike
則不用献烦。 -
pcspike
的線的起點(diǎn)是(x1, y1),終點(diǎn)是(x2, y2)
sysuse nlswide1, clear
list occ wage68 ttl_exp68 wage88 ttl_exp88
twoway pcspike wage68 ttl_exp68 wage88 ttl_exp88
twoway pcspike wage68 ttl_exp68 wage88 ttl_exp88 ||
scatter wage68 ttl_exp68, msym(O) ||
scatter wage88 ttl_exp88, msym(O) pstyle(p4)
mlabel(occ) xscale(range(17))
title("Change in US Women's Experience and Earnings")
subtitle("By Occupation -- 1968 to 1988")
ytitle(Earnings) xtitle(Total experience)
note("Source: National Longitudinal Survey of Young Women")
legend(order(2 "1968" 3 "1988"))
二卖词、帶帽的釘子圖:cap系列命令
rcap -- Range plot with capped spikes
twoway rcap y1var y2var xvar [if] [in] [, options]
- 每個(gè)x對(duì)應(yīng)兩個(gè)y值巩那。
-
rcap
與rspike
唯一的區(qū)別只是帶一個(gè)I
型帽子。
sysuse sp500, clear
twoway rcap high low date
rcapsym -- Range plot with spikes capped with marker symbols
- rcapsym和rcap的區(qū)別在于此蜈,方便添加標(biāo)記和標(biāo)簽即横。
twoway rcapsym y1var y2var xvar [if] [in] [, options]
選項(xiàng) | 說明 |
---|---|
vertical | 垂直釘子圖,默認(rèn)值 |
horizontal | 水平釘子圖 |
marker_options | 標(biāo)記選項(xiàng):形狀裆赵、顏色东囚、大小等 |
marker_label_options | 標(biāo)簽的選項(xiàng):指定標(biāo)簽變量、位置等 |
sysuse sp500, clear
twoway rcapsym high low date
pccapsym -- Paired-coordinate plot with spikes and marker symbols
twoway pccapsym y1var x1var y2var x2var [if] [in] [, options]
-
pccapsym
相當(dāng)于pcspike
战授,區(qū)別在于加帽页藻。 - 選
headlabel
:標(biāo)簽放在第二端點(diǎn),而不是第一端點(diǎn)植兰。
sysuse nlswide1, clear
list occ wage68 ttl_exp68 wage88 ttl_exp88
twoway pccapsym wage68 ttl_exp68 wage88 ttl_exp88
twoway pccapsym wage68 ttl_exp68 wage88 ttl_exp88, headlabel mlabel(occ)
三份帐、計(jì)數(shù)釘子圖:spikeplot
spikeplot varname [if] [in] [weight] [, options]
-
Spikeplot
為一個(gè)變量產(chǎn)生一個(gè)頻率圖,其中頻率呈現(xiàn)為從零開始的垂直線楣导。 - 頻率可以是計(jì)數(shù),百分比或計(jì)數(shù)的平方根朦促。
- 垂直線可以根據(jù)用戶的選擇由非零的基線產(chǎn)生。
-
spike
系列命令的選項(xiàng)臊旭,這里都適用。
選項(xiàng) | 說明 |
---|---|
round(#) | 帶寬 |
fraction | 占總體的百分比 |
root | 計(jì)數(shù)的平方根 |
spike_options | 釘子圖的呈現(xiàn)樣式選項(xiàng) |
addplot(plot) | 添加其它plot |
webuse ghanaage
spikeplot age [fw=pop], ytitle("Population in 1000s") xlab(0(10)90) xmtick(5(10)85)
spikeplot age [fw=pop], fraction
spikeplot age [fw=pop], round(10) #10歲一組
四、圖中添加水平線或垂直線
- 只需添加選項(xiàng)
xline()
或yline()