使用stat_summary_hex以离散色标显示最常见的值

时间:2013-06-28 18:46:59

标签: r ggplot2 visualization

我有一个包含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的颜色填充每个六边形),但颜色标度看起来是连续的,我无法弄清楚如何使用离散的颜色

output

对于额外的上下文,这里是数据的基础,杂乱的视图,我试图通过使用六边形来平滑:

 qplot(data=clusters, xpos, ypos, color=factor(cluster))

output2

2 个答案:

答案 0 :(得分:4)

我不知道你stat_summary_hex(fun.x=mode)正在做什么,但我很确定这不是你的想法(mode给出对象的存储模式,而不是统计模式,{ {1}}与fun.x)的任何形式参数都不匹配。试试这个。它将每个箱中的观察结果列表,并拉出最大计数的标签。

stat_summary_hex

Hexbinned clusters

答案 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

我希望这会有所帮助。