有了這個代碼:如何做選擇性標記GGPLOT geom_point()
library(ggplot2)
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point()
p + geom_point() + geom_text(aes(wt, mpg, label=row.names(mtcars)))
我獲得該曲線圖中:
如何修改上面的代碼,以便它只標籤點wt > 4
或mpg > 25
, 而點的其餘部分仍然未標記。
有了這個代碼:如何做選擇性標記GGPLOT geom_point()
library(ggplot2)
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point()
p + geom_point() + geom_text(aes(wt, mpg, label=row.names(mtcars)))
我獲得該曲線圖中:
如何修改上面的代碼,以便它只標籤點wt > 4
或mpg > 25
, 而點的其餘部分仍然未標記。
供應data
參數geom_text
:
library(ggplot2)
mtcars$name <- row.names(mtcars)
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point()
p + geom_point() +
geom_text(data=subset(mtcars, wt > 4 | mpg > 25),
aes(wt,mpg,label=name))
所得的情節:
PS:我真的不是p + geom()
作風建設ggplots的球迷,我很確定哈德利在原始的ggplot2書中做了這件事來演示對同一個情節的不同修改,但人們似乎已經把它撿起來並與它一起運行。以下是我想做到這一點:
+
添加情節的不同組件放在一起,不用保存每個中間步驟。ggsave()
ggplot
呼叫,只修改了其他事情如果有必要我的版本:
ggplot(mtcars, aes(wt, mpg, label=name)) +
geom_point() +
geom_text(data=subset(mtcars, wt > 4 | mpg > 25))
您可以通過一個subset
參數層。在你的情況下,這需要將rownames作爲列,以便正確評估它們。您將需要明確加載plyr
以獲得功能.
,這使得語法變得簡單。
# shamelessly using @marius initial code
library(ggplot2)
library(plyr)
mtcars$name <- row.names(mtcars)
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point() + geom_text(aes(wt,mpg,label=name), subset = .(wt > 4 | mpg > 25))
你可以只得到一個額外的變量:
carnames <- row.names(mtcars)
carnames[with(mtcars, !(wt > 4 | mpg > 25))] <- ""
p + geom_point() + geom_text(aes(wt,mpg,label=carnames))
一個GGPLOT2狀晶格解決方案:-)
library(latticeExtra)
xyplot(mpg~wt, data=mtcars,pch=19,
panel =function(x,y,...){
# panel.xyplot(x,y,...)
data=subset(mtcars, wt > 4 | mpg > 25)
panel.text(data$wt,data$mpg,label=row.names(data),
col='red',cex=2)
},par.settings = ggplot2like(), axis = axis.grid)