我使用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),那麼鄰居的座標是什麼? –