Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在ggplot2 stat_binhex中显示每个存储单元的最大频率点_R_Ggplot2 - Fatal编程技术网

R 在ggplot2 stat_binhex中显示每个存储单元的最大频率点

R 在ggplot2 stat_binhex中显示每个存储单元的最大频率点,r,ggplot2,R,Ggplot2,我有一个数据集,其中一个坐标可以重复多次。 我想制作一个hexbinplot,显示坐标在该bin中重复的最大次数。我使用的是R,我更喜欢使用ggplot,这样该图与同一报告中的其他图一致 最小工作示例(箱子显示的是计数,而不是最大值): 库(ggplot2) 库(数据表) 种子(41) dat我想,在对数据进行了更多的处理之后,我现在明白了。图中的每个箱子代表多个点,例如,(9,9);(9,10)(10,9);(10,10)都在地块的一个箱子中。我必须提醒大家,这是预期的行为。我不清楚你为什么不

我有一个数据集,其中一个坐标可以重复多次。 我想制作一个hexbinplot,显示坐标在该bin中重复的最大次数。我使用的是R,我更喜欢使用ggplot,这样该图与同一报告中的其他图一致

最小工作示例(箱子显示的是计数,而不是最大值):

库(ggplot2)
库(数据表)
种子(41)

dat我想,在对数据进行了更多的处理之后,我现在明白了。图中的每个箱子代表多个点,例如,(9,9);(9,10)(10,9);(10,10)都在地块的一个箱子中。我必须提醒大家,这是预期的行为。我不清楚你为什么不想这样做。相反,您似乎只想显示其中一个点的值(例如9,9)

我不认为在调用
geom_hex
stat_hexbin
时可以直接执行此操作,因为这些函数试图忠实地表示所有数据。事实上,它们不一定像您所期望的那样需要离散坐标——它们在连续数据上同样有效

出于您的目的,如果您想要更好的控制,您可以使用
geom_tile
并自己计算值,例如(使用
dplyr
magrittr
):


值得注意的是,我仍然认为
geom_tile
可能更有用,即使它没有那么华丽

你能解释一下“坐标重复的最大次数”是什么意思吗?我正在努力理解计数和“坐标重复次数”之间的区别,不知道在这种情况下如何处理“最大值”。假设点(0,0)和(0,1)在同一个箱子中,并且它们是该箱子中唯一的点。(0,0)出现5次,(0,1)出现3次。在这种情况下,图形将显示8,因为它使用的函数是计数(5+3)。我想使用的是max函数,因此显示5(max(5,3))。感谢@JonNagra的澄清。我猜到了,就在你回答的时候贴了一些东西。我现在明白了你们想做什么,但我真的很纠结于为什么——一个用例,在这个用例中,适当的行为可能有助于阐明一个不同的解决方案(我很难理解,当max丢失了这么多信息时,仅显示max如何帮助显示你们的数据,并对查看者隐藏这些信息)。或者,我在下面发布了一个选项,分别显示所有坐标。我认为我采取了错误的方法。你的帖子回答了我的问题,非常接近我的需要。关于我的动机,我在寻找一个用六边形构建的图形,因为我的真实数据有圆坐标,在这些情况下,六边形比正方形更令人愉快。此外,我还需要不同分辨率的图形(使用bins变量可以很容易地执行)。计数对我来说不是一个合适的指标,因为我正在测量深度,我真正想显示的是是否达到了某个水平。我在查看hexbin库时发现了这篇文章,它正是我所需要的:我可以按x和y对变量进行分组,并使用max而不是sum。我不知道是否应该将我的问题标记为重复。我刚刚更新了答案,以纳入您链接的解决方案。我不认为这个问题是完全重复的,因为它是从一个不同的数据格式开始的。谢谢!我不知道在这种情况下如何处理。
library(ggplot2)
library(data.table)
set.seed(41)
dat<-data.table(x=sample(seq(-10,10,1),1000,replace=TRUE),
           y=sample(seq(-10,10,1),1000,replace=TRUE))
dat[,.N,by=c("x","y")][,max(N)]
# No bin should be over 9

p1 <- ggplot(dat,aes(x=x,y=y))+stat_binhex(bins=10)
p1
countedData <-
  dat %$%
  table(x,y) %>%
  as.data.frame()

ggplot(countedData
       , aes(x = x
             , y = y
             , fill = Freq)) +
  geom_tile()
ggplot(countedData
       , aes(x = as.numeric(as.character(x))
             , y = as.numeric(as.character(y))
             , z = Freq)) +
  stat_summary_hex(fun = max, bins = 10
                   , col = "white")