我有一个包含10k行和3列的数据框:xpos,ypos和cluster(cluster是0到9之间的数字):http://pastebin.com/NyQw29tb
我想显示一个十六进制图,每个六边形根据六边形内最频繁的簇进行着色。
到目前为止,我已经:
library(ggplot2)
library(hexbin)
ggplot(clusters, aes(x=xpos, y=ypos, z=cluster)) + stat_summary_hex(fun.x=mode)
我认为它给了我想要的东西(即用0到9的颜色填充每个六边形),但颜色标度看起来是连续的,我无法弄清楚如何使用离散的颜色
对于额外的上下文,这里是数据的基础,杂乱的视图,我试图通过使用六边形来平滑:
qplot(data=clusters, xpos, ypos, color=factor(cluster))
答案 0 :(得分:4)
我不知道你stat_summary_hex(fun.x=mode)
正在做什么,但我很确定这不是你的想法(mode
给出对象的存储模式,而不是统计模式,{ {1}}与fun.x
)的任何形式参数都不匹配。试试这个。它将每个箱中的观察结果列表,并拉出最大计数的标签。
stat_summary_hex
答案 1 :(得分:1)
我相信这里有两个问题。首先,mode
不是您想要的功能(检查帮助 - 它是“获取或设置对象的类型或存储模式”)。其次,参数fun=
而不是fun.x=
的{{1}}。
对模式函数here进行了很好的讨论。推荐的功能是:
stat_summary_hex
最后,您要确保将六边形的填充视为离散值。您可以修改Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
函数,以便返回值是一个字符(如下面的代码所示)。
这是一个可重复的例子:
fun
我希望这会有所帮助。