我有以下数据框
ds <- data.frame(iso2c=as.factor(c(rep("AR",3),rep("BR",3),rep("DE",3),rep("US",3))),
region= as.factor(c(rep("LATAM",6),rep("DEVELOPED",6))),
year= rep(c(1979,1989,1999),4),
value= c( 47.0 , 28.6, 20.8, 100.0, 64.2, 35.4, 16.0 , 9.0, 5.5, 15.6, 11.6, 8.6)) )
并希望在点图中绘制数据,如下所示,
library(lattice)
dotplot(iso2c~value, data=ds, groups=year,pch=19,col="dark blue",cex=1.3,ylab="country")
我想在整个价值范围内(从国家的最大值到国家的最小值)为每个国家划一条线。我不能使用“type = h”,因为它会绘制从max到0的行,而不是从max到min。 有什么建议吗?感谢
答案 0 :(得分:2)
我认为这样做了。我计算了“y”值组内x值的最大值和最小值,然后使用了格子 - lsegments
函数
dotplot(iso2c~value, groups=year, data=ds, panel = function(x,y,...) {
x0=sapply( split(x,y), min)
y0=as.numeric(unique(y) )+.1
x1=sapply( split(x,y) ,max)
y1=as.numeric(unique(y)) +.1
panel.dotplot(x, y,...)
lsegments(x0,y0,x1,y1)
} ,
pch=19,col="dark blue",cex=1.3,ylab="country")