我有一组调查久坐行为、睡眠和身体活动的综合数据。每个数据点都是时间的一部分。我想使用
ggtern
将其绘制在三元图上,并按如下方式进行操作,得到以下输出。
library(ggtern)
library(gtools)
library(zCompositions)
comp_df <- as.data.frame(data[,c("id","PA", "SB", "Sleep")])
ggtern(data = comp_df, aes(Sleep, SB, PA)) +
geom_mask() +
geom_point() +
theme_bw() +
theme_showarrows() +
geom_confidence_tern(colour = "black", breaks = c(0.25, 0.5, 0.75))
现在这就是大部分的路了。不过,我想添加一个数据点,在三元图上绘制该数据集的组成平均值,并以特定方式标记该平均值的坐标。我使用
GitHub中的
epicoda
包来识别成分平均值并添加适当的标签,如下所示。
comp_labels <- c("Sleep", "SB", "PA")
library(epicoda)
cm <- comp_mean(comp_df, comp_labels = comp_labels, units = "hr/day")
然后,我可以通过添加另一个
geom_point()
参数轻松地将其添加到我的三元图中,这会产生相同的输出,但具有成分平均值的附加点。
ggtern(data = comp_df, aes(Sleep, SB, PA)) +
geom_mask() +
geom_point() +
geom_point(data = cm) +
theme_bw() +
theme_showarrows() +
geom_confidence_tern(colour = "black", breaks = c(0.25, 0.5, 0.75))
我想要做的是添加线条来用百分比和时间来标记平均值,如下图所示。非常感谢这里的任何帮助。
不幸的是,您没有提供任何数据,因此此代码未经测试,但
geom_[TLR]line
应该对您有帮助。例如,要标记混合物20%/20%/60%
,您可以使用:
ggtern(data = comp_df, aes(Sleep, SB, PA)) +
geom_mask() +
geom_point() +
theme_bw() +
theme_showarrows() +
geom_confidence_tern(colour = "black", breaks = c(0.25, 0.5, 0.75)) +
geom_Tline(Tintercept = .2) +
geom_Lline(Lintercept = .2) +
geom_Rline(Rintercept = .6)
也就是说,类似:
geom_Tline(Tintercept = cm$SB) +
geom_Lline(Lintercept = cm$Sleep) +
geom_Rline(Rintercept = cm$PA)
应该可以解决问题。