在這種情況下,一切都很好:有什麼辦法可以用ggplot 2來使用Identify命令嗎?
x <- 1:10
y <- x^3
plot(x, y)
identify(x, y)
但是,使用qplot有一些麻煩:
x <- 1:10
y <- x^3
qplot(x, y)
identify(x, y)
有誰知道類似的命令或其他方式GGPLOT2圖表標註具體點?
在這種情況下,一切都很好:有什麼辦法可以用ggplot 2來使用Identify命令嗎?
x <- 1:10
y <- x^3
plot(x, y)
identify(x, y)
但是,使用qplot有一些麻煩:
x <- 1:10
y <- x^3
qplot(x, y)
identify(x, y)
有誰知道類似的命令或其他方式GGPLOT2圖表標註具體點?
這裏是一個作品只使用grid
和ggplot2
包的方法:
library(ggplot2)
library(grid)
x <- 1:10
y <- x^3
qplot(x, y)
downViewport('panel-3-4')
pushViewport(dataViewport(x,y))
tmp <- grid.locator('in')
tmp.n <- as.numeric(tmp)
tmp2.x <- as.numeric(convertX(unit(x,'native'), 'in'))
tmp2.y <- as.numeric(convertY(unit(y,'native'), 'in'))
w <- which.min((tmp2.x-tmp.n[1])^2 + (tmp2.y-tmp.n[2])^2)
grid.text(w, tmp$x, tmp$y)
如果你想有一個文本標籤,而不是數你可以在通話的東西,如letters[w]
更換w
到grid.text
(或無論您想要什麼標籤的矢量)。
如果你打算做幾個這樣的事情,那麼你可以用一個函數來包裝它,最後幾行可能在一個循環中。你也可以添加附加邏輯來警告,如果你不點擊一個點附近(比如識別),或者將標籤移近或者離點更近(這個版本將標籤放在最近的數據點的標籤點上) 。
我創建了一個小變通使用ggplot
df <- data.frame(x=c(1.8,2.1,3.1,2.8,3.1,4.9,5.1,3.2,2.2),
y=c(3.2,2.3,4.1,5.2,3.1,2,1.9,2.1,3),
name=c('agw452','hhewhdsgwgb','cgahawrhs','gsarhrwhd','ehhrwhrwwrw','fhhrwwrw','ghhWwr','hhHRWRHwr','ihwhrHWRHw'))
plot(df$x,df$y)
identified <- identify(df$x,df$y,labels=df$name,pos=T)
df$pos <- NA
df[identified$ind,]$pos <- identified$pos
ggplot(df,aes(x=x,y=y)) + geom_point() +
geom_point(data=subset(df,!is.na(pos)),aes(color='red')) +
geom_text(data=subset(df,pos == 1),aes(label=name),vjust=1) +
geom_text(data=subset(df,pos == 2),aes(label=name),hjust=1) +
geom_text(data=subset(df,pos == 3),aes(label=name),vjust=-.5) +
geom_text(data=subset(df,pos == 4),aes(label=name),hjust=0)
它使用索引和點擊的位置,並在相同的位置在繪圖功能放置在標籤內的識別功能...
希望幫助...
將有更多的位置則僅有4有用的...但不知道如何改寫識別...但;-)
您可以通過使用功能ggplotly
從包plotly
轉換您的情節,與ggplot2
交互式圖形制作,例如:
library(ggplot2)
library(plotly)
# Prepare data
x <- 1:10
y <- x^3
names <- paste("Point", LETTERS[x])
# Make a plot with `ggplot` as usual
qplot(x, y, label = names)
# Convert it to interactive plot
ggplotly()
然後將光標移到興趣點,並找到有關它的信息。
'ggmap'包中的'gglocator'和'?geom_text'的組合應該給你你想要的,但不如識別那麼好。你必須寫出你傳遞給'geom_text'的x,y座標和文本的數據框。如果有更好的方式,我很喜歡它。 –
謝謝泰勒。我會嘗試你的組合! –
@DaviMoreira,[這將工作在你的情況](http://stackoverflow.com/questions/9505495/identify-points-in-scatterplot-qplot/9505920#9505920)? –