如何在ggplot2中获取绘图左下角角落的精确X、Y坐标?
如何获取ggplot2散点图中特定点的精确坐标?
嘿,我来帮你解决这个问题!你已经用这段代码画出了mtcars数据集里hp(马力)和wt(车重)的散点图:
xbreaks <- c(100, 200, 300) ybreaks <- c(2, 3, 4, 5) ggplot(mtcars, aes(hp, wt)) + scale_x_continuous(breaks=xbreaks) + scale_y_continuous(breaks=ybreaks) + geom_point()
想拿到左下角绿点的精确坐标,其实有几种简单的方法在R里实现:
直接从源数据筛选
因为散点图的点完全来自mtcars数据集,你可以直接找出符合视觉特征的行——比如找马力最小(x值最小)的记录:# 找出hp最小的行 mtcars[which.min(mtcars$hp), ]运行后会看到这是Honda Civic的记录,精确坐标是
hp=52,wt=1.615。如果是找车重最小(y值最小)的点,用which.min(mtcars$wt)即可,对应Lotus Europa的hp=110,wt=1.513。从ggplot绘图对象提取数据
如果不确定具体是哪个点,或者你的图做了坐标变换,可以通过ggplot_build()提取绘图用的原始数据:# 先把绘图对象保存为变量 p <- ggplot(mtcars, aes(hp, wt)) + scale_x_continuous(breaks=xbreaks) + scale_y_continuous(breaks=ybreaks) + geom_point() # 提取geom_point层的绘图数据 plot_data <- ggplot_build(p)$data[[1]] # 按x值排序,找到最小的那个点 plot_data %>% dplyr::arrange(x) %>% dplyr::select(x, y)这样就能看到所有点的精确x、y值,排序后最顶部的就是左下角的点啦。
内容的提问来源于stack exchange,提问作者Nick Brown
相关产品推荐
相关产品推荐

