假设我有一个包含以下列的数据框:x, y, num, denom
,我想生成一个六边形图,其中六边形的颜色由sum(num)/sum(denom)
设置。
我认为答案会涉及stat_summary_hex
所以我天真地尝试过:
ggplot(data, aes(x=x, y=y)) + stat_summary_hex(fun=function(d) {sum(d$num)/sum(d$denom) })
但输出是:
Error: stat_summaryhex requires the following missing aesthetics: z
我理解为什么(我没有给它z
美学),但我不确定下一步该尝试什么:我怎样才能传递2 z
美学(即{{ 1}}和num
)?
答案 0 :(得分:2)
我最终找到了一个黑客来做我想做的事,我将在这里记录:
ggplot(data, aes(x=x,y=y,z=complex(0,num,denom))) +
stat_summary_hex(fun= function(x) { sum(Re(x)) / sum(Im(x)) })
基本上,我确实提供了一个z
参数,这是一列复数。复数是数字,所以ggplot允许它们通过,它们有两个部分,一个实部和一个虚部,所以聚合函数能够计算我想要的比率。