R 当使用两个变量对每个方面进行注释时,分别对qplot上的每个方面进行注释
我正在生成一个具有4个面的面图,使用两个变量(每个变量具有2个级别)来定义面 我使用的代码如下:R 当使用两个变量对每个方面进行注释时,分别对qplot上的每个方面进行注释,r,ggplot2,facet,annotate,R,Ggplot2,Facet,Annotate,我正在生成一个具有4个面的面图,使用两个变量(每个变量具有2个级别)来定义面 我使用的代码如下: qplot(hp, mpg, data=mtcars, facets=vs~am, size=I(3), geom=c("point","smooth"), xlab="Horsepower", ylab="Miles per Gallon") 我试图在每个刻面上放置一个唯一的标签,上面写着“坡度=直线的坡度” 我在这里看到了一些问题,这些问题描述了当面被一个变量(而不是2)定义时如何实
qplot(hp, mpg, data=mtcars,
facets=vs~am, size=I(3), geom=c("point","smooth"),
xlab="Horsepower", ylab="Miles per Gallon")
我试图在每个刻面上放置一个唯一的标签,上面写着“坡度=直线的坡度”
我在这里看到了一些问题,这些问题描述了当面被一个变量(而不是2)定义时如何实现这一点。如何添加唯一的标签
我知道我可以使用geom_文本,类似这样的东西
geom_text(sig=c("Slope = 1","Slope = 2","Slope = 3","Slope = 4")),aes(x=4.5,y=1,label=sig))
尝试:
我还发现了一种方法,它允许您更改其中一个标签的放置位置。并非所有的标签都必须在相同的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
mtcars[,c(“cyl”、“am”、“gear”)]您需要在data.frame
中定义vs
和am
(刻面变量)的值,并使用上面更正的文本。你现在可以取消否决票了!谢谢我在等待香农的反馈。你想在facet中更改文本,对吗?这可能不是最好的,但是改变因子名称怎么样?我基本上想在数据中没有的每个方面添加注释。
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