【发布时间】:2018-12-18 00:36:58
【问题描述】:
我正在用汇总统计数据注释我的图表。我想使用 bold 字体快速将用户的注意力吸引到按组划分的最佳/最差统计数据上。突出显示的数字需要在运行时由数据本身确定。
这是一个使用 ChickWeight 数据集的示例,显示了基于日粮的雏鸡体重变化:
library(ggplot2)
library(dplyr)
# Calculate end vs start weights
df <- merge(filter(ChickWeight, Time==21), filter(ChickWeight, Time==0), by=c("Chick", "Diet"))
df$dWeight <- df$weight.x - df$weight.y
# Summary statistics: sd & mean
df.stat <- do.call(data.frame,
aggregate(dWeight ~ Diet,
data=df,
FUN = function(x) c(SD=sd(x), MN=mean(x))))
ggplot(data = df) +
facet_grid(Diet ~ .) +
geom_histogram(binwidth=10, aes(x=dWeight)) +
geom_vline(data=df.stat, aes(xintercept = dWeight.MN), color="black") +
geom_text(data=df.stat, aes(x=Inf,
y=Inf,
label = sprintf("\nmean = %4.1f\nsd = %4.1f",
dWeight.MN, dWeight.SD),
hjust=1,
vjust=1))
在下图中,我只想突出显示以下文本:
在第 3 组中,“mean = 229.5”将变为“mean = 229.5”
在第 4 组中,“sd = 43.9”将变为“sd = 43.9”
【问题讨论】:
-
只将文本的一部分加粗,尤其是由变量给出的部分是很棘手的,看起来你需要这样的东西stackoverflow.com/a/50768373/1320535。
-
@JuliusVainora,该技术似乎需要两次
geom_text()调用。一个打印非粗体文本,另一个打印粗体文本,留下其他部分phantom()。我不确定如何与facet_grid()一起使用。我完全不知道如何在 plotmath 中使用expression()、bquote()、substitute()等。每次尝试都会给出一个新的错误消息,导致另一个兔子洞追逐。