啞鈴圖臭杰,又叫做棒棒糖圖粤咪。因其形狀和棒棒糖相似而得名,具體來看實(shí)際上是一個(gè)散點(diǎn)和一條線段的組合渴杆。棒棒糖圖是散點(diǎn)圖的一種變體寥枝,又與柱狀圖非常相似,但其在清晰展示數(shù)據(jù)的同時(shí)磁奖,減少了圖形量囊拜,使得讀者能夠更加關(guān)注于數(shù)據(jù)本身而非圖形。棒棒糖圖能夠幫助將數(shù)值與類別對(duì)齊比搭,非常適合比較多個(gè)類別的值之間的差異冠跷。?
下面兩張圖就是柱狀圖展示和棒棒圖的差別∩砼担可以看出用啞鈴圖或者棒棒圖展示會(huì)比柱狀圖清晰很多蜜托,大大減少了圖形量尤其是兩組柱狀圖的對(duì)比,能明顯看出兩組結(jié)果的差異霉赡。
下面這個(gè)例子也是比較好看的一個(gè)啞鈴圖橄务。
這次我們就來學(xué)習(xí)啞鈴圖的一些規(guī)則和技巧。如果ggplot用的好的穴亏,可以直接用geom_segment()**函數(shù)參數(shù)的調(diào)整來控制線段蜂挪。當(dāng)然也可以用ggalt里面的geom_dumbbell來實(shí)現(xiàn)。
library(ggplot2)
library(ggalt)
##################### 讀取數(shù)據(jù) #####################
data <- read.table("data.txt",sep="\t",header=T)
ggplot(data, aes(x=Women, xend=Men, y=School))+
? # 使用ggalt包中的geom_dumbbell函數(shù):
? geom_dumbbell(
? ? # 設(shè)置兩個(gè)點(diǎn)的顏色
? ? colour_x = "#b1cb41",?
? ? colour_xend = "#45a0e2",
? ? # 設(shè)置兩個(gè)點(diǎn)的大猩せ:
? ? size_x = 2,
? ? size_xend = 2,
? ? # 設(shè)置線的粗細(xì):
? ? size=0.5,
? ? # 線的顏色:
? ? color="gray")+
? # 主題:
? theme_light()+
? # 去掉x軸細(xì)網(wǎng)格線:
? theme(panel.grid = element_blank()) +
? xlab("Annual Salary (in thousands)")
也可以自己多美化美化棠涮。
ggplot(data, aes(x=Women, xend=Men, y=School))+
? geom_dumbbell(
? ? colour_x = "#b1cb41",?
? ? colour_xend = "#45a0e2",
? ? size_x = 2,
? ? size_xend = 2,
? ? size=0.5,
? ? color="gray",
? ? dot_guide = T)+? #加上引導(dǎo)線
? # 加上兩個(gè)散點(diǎn)做外環(huán),并讓其隨著size大小而變化:
? geom_point(aes(Women, School,size=Women),
? ? ? ? ? ? alpha=0.5,color="#b1cb41")+
? geom_point(aes(Men, School,size=Men),
? ? ? ? ? ? alpha=0.5,color="#45a0e2")+
? theme_light()+
? # 修改網(wǎng)格線:
? theme(panel.grid =element_blank(),
? ? ? ? # 去掉圖例:
? ? ? ? legend.position = "none") +
? xlab("Annual Salary (in thousands)")
當(dāng)然刺覆,也可以自己通過geom_segment來控制實(shí)現(xiàn)故爵。
ggplot(data)+
geom_point(aes(Women, School,size=Women),shape=16,size=2,color="#b1cb41")+
geom_point(aes(Men, School,size=Men),shape=16,size=2,color="#45a0e2")+
geom_segment(aes(x=Women,xend=Men,y=School,yend=School),color="gray")+
theme_light()+
theme(panel.grid =element_blank()) +
xlab("Annual Salary (in thousands)")
其中g(shù)eom_segment的常用的參數(shù):
? ? x - (必須) 起點(diǎn)的x坐標(biāo)
? ? y - (必須) 起點(diǎn)的y坐標(biāo) — 此參數(shù)用作設(shè)定基線
? ? xend - (必須)終點(diǎn)的x坐標(biāo)
? ? yend - (必須)終點(diǎn)的y坐標(biāo)
? ? size - (默認(rèn):0.5)線段的寬度
? ? linetype - (默認(rèn):1=solid)線段的類型
? ? color - (默認(rèn): “black”) 線段的顏色
? ? alpha - (默認(rèn):1=opaque)線段的透明度