使用向量作为密度的三元图
Ternary Plot using a vector as density
我有这样的数据集:
DENSE<-runif(10, min=0, max=100)
CROP<-runif(10, min=0, max=100)
WILD<-runif(10, min=0, max=100)
BetaDiv<-runif(10, min=0, max=1)
df<-data.frame(DENSE, CROP, WILD, BetaDiv)
我用这段代码做了一个简单的三元图,
ggtern(df[ordered(-df$BetaDiv),],aes(DENSE,CROP,WILD))+
geom_point(alpha=0.8, aes(color=BetaDiv), size=3)+ scale_color_viridis_c(direction = -1)+
stat_density_tern(geom = 'polygon',
n = 100,
aes(fill = ..level..,
alpha = ..level..))
Ternary
但是,我需要通过变量 BetaDiv 给出密度。也就是说,密度显示了 BetaDiv 值集中的位置。
谢谢大家
RS.
你需要通过 aes(value=...)
来指定它,我认为十六进制更有意义,它基本上将你的图切割成十六进制的 bin 并计算每个 bin 中的 beta 值的总和。
set.seed(111)
DENSE<-runif(20, min=0, max=100)
CROP<-runif(20, min=0, max=100)
WILD<-runif(20, min=0, max=100)
BetaDiv<-runif(20, min=0, max=1)
df<-data.frame(DENSE, CROP, WILD, BetaDiv)
g = ggtern(df,aes(DENSE,CROP,WILD))+
geom_point(alpha=0.8, aes(color=BetaDiv), size=3)+
scale_color_viridis_c(direction = -1) +
theme_bw()
g + stat_hex_tern(aes(value=BetaDiv),binwidth=0.15,alpha=0.15,fun="mean")
我有这样的数据集:
DENSE<-runif(10, min=0, max=100)
CROP<-runif(10, min=0, max=100)
WILD<-runif(10, min=0, max=100)
BetaDiv<-runif(10, min=0, max=1)
df<-data.frame(DENSE, CROP, WILD, BetaDiv)
我用这段代码做了一个简单的三元图,
ggtern(df[ordered(-df$BetaDiv),],aes(DENSE,CROP,WILD))+
geom_point(alpha=0.8, aes(color=BetaDiv), size=3)+ scale_color_viridis_c(direction = -1)+
stat_density_tern(geom = 'polygon',
n = 100,
aes(fill = ..level..,
alpha = ..level..))
Ternary
但是,我需要通过变量 BetaDiv 给出密度。也就是说,密度显示了 BetaDiv 值集中的位置。
谢谢大家
RS.
你需要通过 aes(value=...)
来指定它,我认为十六进制更有意义,它基本上将你的图切割成十六进制的 bin 并计算每个 bin 中的 beta 值的总和。
set.seed(111)
DENSE<-runif(20, min=0, max=100)
CROP<-runif(20, min=0, max=100)
WILD<-runif(20, min=0, max=100)
BetaDiv<-runif(20, min=0, max=1)
df<-data.frame(DENSE, CROP, WILD, BetaDiv)
g = ggtern(df,aes(DENSE,CROP,WILD))+
geom_point(alpha=0.8, aes(color=BetaDiv), size=3)+
scale_color_viridis_c(direction = -1) +
theme_bw()
g + stat_hex_tern(aes(value=BetaDiv),binwidth=0.15,alpha=0.15,fun="mean")