有没有办法在ggplot 2中使用Identify命令?

Dav*_*ira 8 r ggplot2

在这种情况下,一切都很好:

x <- 1:10 
y <- x^3
plot(x, y)
identify(x, y)
Run Code Online (Sandbox Code Playgroud)

但是,使用qplot有一些麻烦:

x <- 1:10 
y <- x^3
qplot(x, y)
identify(x, y)
Run Code Online (Sandbox Code Playgroud)

有没有人知道类似的命令或其他方式来标记ggplot2图中的特定点?

Geg*_*naV 9

您可以ggplot2使用ggplotly包中的函数将您的绘图转换为交互式图形plotly,例如:

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()
Run Code Online (Sandbox Code Playgroud)

然后将光标移动到感兴趣的点上并查找有关它的信息.


Gre*_*now 6

这是一个只使用gridggplot2包工作的方法:

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 )
Run Code Online (Sandbox Code Playgroud)

如果你想有一个文本标签,而不是数你可以取代w在调用grid.text喜欢的东西letters[w](或其他载体的标签你想要的).

如果你要做其中的几个,那么你可以将它包装在一个函数中,最后几行可能在循环中.您还可以添加附加逻辑来警告,如果您没有在点附近点击(如识别确实)或将标签移动距离点更近或更远(此版本将最近数据点的标签放在您单击的点) .