我使用R的ggtern
软件包来创建一个可爱的三元图,它显示了我用仿真模型生成的一些数据。我会在这篇文章中附上一个情节,告诉你情节是怎样的,但是我没有足够的声望去做这件事。相反,我会粘贴下面的代码,可以复制我的情节的所有基本功能。作为一个免责声明,我对ggplot
图形非常新,所以我确信我的代码很混乱。我的问题很简单(我认为) - 我如何修改我的代码以平滑“水果集”(make1df$Value
)的值,从而揭示数据中的整体模式/趋势?我甚至想到即使加权平均值也很简单,所有邻近点甚至可以满足要求。到目前为止,我只能弄清楚如何平滑点的密度而不是与这些点相关的值(使用像stat_smooth2d()
之类的函数)。如何通过点值而不是R点密度来平滑三元图?
请记住,我在下面提供的是“假数据”这不是我如何生成我实际打算绘制的数据。下面使用的compositions
函数在partitions
包中。
代码:
library(plyr) # for rename
library(ggtern) # for ggtern
library(partitions) # for compositions
make1 = as.matrix(compositions(50, 3, include.zero=TRUE))
make1 = t(make1)
make1df = as.data.frame(make1)
make1df = rename(make1df, c("V1"="H", "V2"="B", "V3"="S"))
seq1 = seq(from=0.24, to=0.41, length=1326)
make1df$Value = rep(0, 1326)
for (i in 1:1326) {
make1df$Value[i] = seq1[i] + rnorm(1, 0, 0.03)
}
ggtern(make1df, aes(H, B, S)) +
geom_point(aes(colour=make1df$Value), size=4.5) +
scale_colour_gradient(low = "pink", high = "darkblue") +
theme_bw() +
theme(axis.tern.text=element_text(size=24),
axis.tern.showtitles=FALSE,
axis.tern.arrow.text=element_text(size=22),
axis.tern.arrow=element_line(size=1.5, color="black"),
axis.tern.vshift=unit(3, "line"),
legend.title = element_text(size=24),
legend.text = element_text(size = 24),
legend.key.size = unit(3.5, "lines")) +
labs(x = "% HONEY BEES",y = "% BUMBLE BEES", z = "% SMALL BEES",
colour="MEAN \nFRUIT SET")
我相信你必须自己计算加权平均数,*之前绘制。如果一个点有坐标(h,b,s),那么邻居的坐标是什么? –