如何在R中的hexbin图上绘制点?

时间:2015-04-30 03:32:06

标签: r plot scatter-plot points

我有两组需要在同一图表上绘制的数据。一个集非常大(~10⁶),我想用hexbin绘图,另一个集非常小(~10),我想绘制点。如何在hexbin上绘制点? 我得到的成功就越接近:

bin = hexbin(x, y)
plot(bin)
pushViewport(dataViewport(x, y))
grid.points(x, y)

我感谢任何帮助:)

3 个答案:

答案 0 :(得分:5)

假设您使用的是hexbin包...

library(hexbin)
library(grid)

# some data from the ?hexbin help
set.seed(101)
x <- rnorm(10000)
y <- rnorm(10000)
z <- w <- -3:3

# hexbin
bin <- hexbin(x, y)

# plot  - look at str(p)
p <- plot(bin)

# push plot viewport
pushHexport(p$plot.vp)

# add points
grid.points(z, w, pch=16, gp=gpar(col="red"))

upViewport()

enter image description here

答案 1 :(得分:2)

试试这个...它应该可以正常工作。 只需在hexbinplot函数中创建一个panel.function:

hexbinplot(d.frame$X ~ d.frame$Y
   ,aspect=...,cex.title=...
   ,panel=function(x, y, ...){
      panel.hexbinplot(x,y,...)
   #   panel.curve(...)        # optional stuff
   #   panel.text(...)         # optional stuff
      panel.points(x=c(25,50),y=c(100,150),pch=20,cex=3.2)
   }
)

请查看:How to add points to multi-panel Lattice graphics bwplot?

答案 2 :(得分:1)

您可以使用ggplot包执行该任务,请参阅下面的代码,只需将geom_point的data参数中使用的data.frame替换为您要绘制的点的数据。

library(ggplot2)
library(hexbin)
ggplot(diamonds, aes(carat, price)) + stat_binhex() + geom_point(data = diamonds[c(1,10,100,1000), ], aes(carat, price), size=10, color = 'red' )