1

我想使用 R 的hexbin包按屏幕分辨率绘制对网站的访问。我当前的数据集格式如下:

Width   Height   Visits
1366    768      507089
1280    800      401926
1024    768      293210
...     ...      ...

完整的数据集可在此处获得:http ://cl.ly/1t132z0u0l1W

我想在 x 轴上绘制宽度,在 y 轴上绘制高度,并使用访问来修改单元格大小和/或颜色。Hexbin 包含一个 hexTapply 函数,该函数输出一个数组,我们可以使用该数组定义单元格值,但它在我的数据上没有按预期执行。

我正在使用以下代码:

screenres <- read.csv(file="screenres2013.csv",head=TRUE,sep=",")
width <- screenres$Width
height <- screenres$Height
visits <- screenres$Visits

hbin <- hexbin(width,height,xbins=20,IDs=TRUE)
P <- plot(hbin,type='n')

hVisits <- hexTapply(hbin,visits,sum)
pushHexport(P$plot.vp)
grid.hexagons(hbin,style='lattice',use.count=FALSE,cell.at=hVisits)

执行 grid.hexagons() 后,我收到以下错误:

Error in unit(x, default.units) : 'x' and 'units' must have length > 0
In addition: Warning message:
In min(cnt, na.rm = TRUE) : no non-missing arguments to min; returning Inf

如果我然后修改 hVisits 如下:

hVisits[1] <- 1

并重试 grid.hexagons(),它按预期执行。

我在文档中的任何示例中都没有遇到此错误。我不明白是什么导致了这个问题,也不明白为什么对 hVisits 的小修改会对函数的执行产生任何影响。这是我的数据有问题还是我错过了关键步骤?

我对 R 非常陌生(昨天下载了它),所以请让我知道是否有任何其他信息会有所帮助。在此先感谢您的时间。

4

0 回答 0