6

我使用包生成一个图hexbin

在此处输入图像描述

# install.packages("hexbin", dependencies=T)
library(hexbin)


set.seed(1234)
x <- rnorm(1e6)
y <- rnorm(1e6)
hbin <- hexbin(
  x   = x
  , y = y
  , xbin = 50
  , xlab = expression(alpha)
  , ylab = expression(beta)
)


## Using plot method for hexbin objects:
plot(hbin, style = "nested.lattice")

abline(h=0)

这似乎生成了一个 S4 对象 ( hbin),然后我使用plot. 现在我想使用 向该图添加一条水平线abline,但不幸的是这会产生错误:

plot.new 尚未被调用

我也不知道如何操纵轴标签的位置(alpha 和 beta 在数字内),更改图例的位置等。

我对 OOP 很熟悉,但到目前为止我还没有弄清楚 plot() 如何处理对象(它是否调用对象的某些方法?)以及如何操作结果图。

为什么我不能简单地在情节上画一条线?

如何操作轴标签?

4

3 回答 3

2

hexbin使用grid图形,而不是base. 有一个类似的函数 ,grid.abline它可以通过指定斜率和截距在图上画线,但使用的坐标系统令人困惑:

grid.abline(325,0)

大致得到你想要的,但这里的截距是肉眼发现的。

您将有更多的运气使用ggplot2

library(ggplot2)
ggplot(data,aes(x=alpha,y=beta)) + geom_hex(bins=10) + geom_hline(yintercept=0.5)

六边形

于 2013-03-19T16:49:30.410 回答
2

使用格子版本的十六进制 bin - hexbinplot()panel你可以添加你的线条,style你可以选择不同的六边形可视化方式。检查帮助以hexbinplot获取更多信息。

library(hexbin)
library(lattice)
x <- rnorm(1e6)
y <- rnorm(1e6)
hexbinplot(x ~ y, aspect = 1, bins=50, 
           xlab = expression(alpha), ylab = expression(beta), 
           style = "nested.centroids",
           panel = function(...) {
             panel.hexbinplot(...)
             panel.abline(h=0)
             })

在此处输入图像描述

于 2013-03-20T13:01:08.857 回答
0

我在使用hexbin库找到很多基本的绘图调整(轴范围、标签等)时遇到了很多麻烦,但我想出了如何将这些点导出到任何其他绘图函数中:

hxb<-hexbin(x=c(-15,-15,75,75),
            y=c(-15,-15,75,75),
            xbins=12)

hxb@xcm    #gives the x co-ordinates of each hex tile
hxb@ycm    #gives the y co-ordinates of each hex tile
hxb@count  #gives the cell size for each hex tile

points(x=hxb@xcm, y=hxb@ycm, pch=hxb@count)

您可以将这三个向量输入到您通常使用的任何绘图工具中。通常会调整大小缩放等,但它比顽固的 hexplot 函数要好得多。我在ggplot2 stat_binhex中发现的问题是我无法将十六进制设置为不同的大小......只是不同的颜色。

如果你真的想要六边形,plotrix有一个我认为很好的六边形绘图功能。

于 2013-12-13T22:09:11.983 回答