在这种情况下,一切都很好:
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图中的特定点?
您可以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)
然后将光标移动到感兴趣的点上并查找有关它的信息.
这是一个只使用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 )
Run Code Online (Sandbox Code Playgroud)
如果你想有一个文本标签,而不是数你可以取代w在调用grid.text喜欢的东西letters[w](或其他载体的标签你想要的).
如果你要做其中的几个,那么你可以将它包装在一个函数中,最后几行可能在循环中.您还可以添加附加逻辑来警告,如果您没有在点附近点击(如识别确实)或将标签移动距离点更近或更远(此版本将最近数据点的标签放在您单击的点) .
| 归档时间: |
|
| 查看次数: |
7497 次 |
| 最近记录: |