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

3

我有两组需要绘制在同一图表上的数据。其中一个集合非常大(约10⁶),我想用hexbin来绘制,而另一个集合非常小(约10),我想绘制点。如何在hexbin上绘制点? 我最接近成功的方法是这样的:

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

我很感激任何帮助 :)


你尝试过使用 points(bin) 而不是 plot() 吗? - Molx
@molx,我尝试了points(bin),但对我来说没有起作用。 - Dani Depi
我刚意识到它实际上不应该起作用,我以为 hexbin() 会创建一个图表,但它并没有。 - Molx
3个回答

7
假设你正在使用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


嗨,多久了。我又来了...你知道如何只使用命令“hexbinplot”来完成这个任务吗?现在我需要用这个命令。我尝试了所有的方法都失败了。 - Dani Depi
嗨,丹尼;我不是一个真正的格子用户,所以我不确定。我认为有一种使用面板参数的方法,所以值得提出一个新问题...但另一个(稍微简单一些)的解决方法是 hexbinplot(y~x) + xyplot(z~w, col="red", pch=16, cex=2) - user20650

2

试试这个...应该可以正常工作。 只需在您的hexbinplot函数中创建一个面板函数:

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)
   }
)

举个例子,看一下:如何向多面板Lattice图形bwplot添加点?


谢谢你,@Manuel F. :D - Dani Depi
请不要发布已经失效或可能即将失效的链接。 - Frank

2
您可以使用ggplot包来完成这个任务,看下面的代码,只需将数据参数中用于geom_point的data.frame替换为您要绘制的点的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' )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接