我正在制作一个带有4个面的刻面图,使用两个变量,每个变量有2个级别来定义构面。
我正在使用这样的代码:
qplot(hp, mpg, data=mtcars,
facets=vs~am, size=I(3), geom=c("point","smooth"),
xlab="Horsepower", ylab="Miles per Gallon")
我正在尝试在每个方面放置一个唯一的标签,上面写着" Slope = 线的斜率"
我在这里看到了一些问题,这些问题描述了当facet被一个变量定义时,如何做到这一点,而不是2.如何添加唯一标签?
我知道我可以使用geom_text,类似这样的
geom_text(sig=c("Slope = 1","Slope = 2","Slope = 3","Slope = 4")),aes(x=4.5,y=1,label=sig))
答案 0 :(得分:2)
尝试:
mtcars$slope = with(mtcars, ifelse(am & vs, 1, ifelse(am,2, ifelse(vs, 3, 4))))
ggplot(data=mtcars)+
geom_point(aes(x=hp, y=mpg))+
facet_grid(vs~am)+
labs(x="Horsepower", y="Miles per gallon")+
geom_text(aes(x=250,y=50,label=paste("slope=",slope)))
答案 1 :(得分:0)
我还发现了一个方法here,它允许您更改其中一个标签的放置位置。也就是说,并非所有的实验室都必须处于相同的x,y坐标。
mtcars[, c("cyl", "am", "gear")] <- lapply(mtcars[, c("cyl", "am", "gear")], as.factor)
attach(mtcars)
p <- qplot (hp, mpg, facets=vs~am, size=I(3), xlab="hp", ylab="mpg")
len <- length(levels(mtcars$vs)) * length(levels(mtcars$am))
vars <- data.frame(expand.grid(levels(mtcars$vs), levels(mtcars$am)))
colnames(vars) <- c("vs", "am")
dat <- data.frame(x = 300, y = 50, vars, labs=LETTERS[1:len])
p <- p + geom_text(aes(x, y,
label=c("Slope = 1","Slope = 2","Slope = 3","Slope = 4"),
group=NULL), data=dat)
p
更改一个特定标签的位置:
dat[1, 1:2] <- c(200, 20) #to change specific locations
p