Вот один способ, которым я могу придумать, чтобы выделить определенные c коробочные диаграммы на основе стандартного отклонения набора. Пока вы будете следовать логике программирования c, вы сможете адаптироваться к другим методам маркировки.
Общий подход состоит в том, чтобы обработать ваш набор данных для включения категориальных данных в виде дополнительных столбцов, а затем использовать эти столбцы Вы создали, чтобы применить эстетику c к участку.
# create a column for standard deviation for individual categories within the groups
df.avg <- df %>% group_by(key,category) %>% summarize(sd.val=sd(value))
# merge both datasets to "add" the summary data in long/tidy format
df.merge <- merge(df, df.avg)
# the plot
ggplot(df.merge, aes(x=category, y=value)) +
geom_boxplot(aes(fill=sd.val), alpha=0.8) +
facet_grid(key ~ .) +
scale_fill_gradient(name='Std Dev', high='red', low='green')
Если вы хотите только обозначить «порог» стандартного отклонения (например, только значения SD, которые больше, чем 1,1 в красном), это может работать:
ggplot(df.merge, aes(x=category, y=value)) +
geom_boxplot(aes(fill=eval(sd.val>1.1)), alpha=0.8) +
facet_grid(key ~ .) +
scale_fill_manual(name=NULL, values=list('TRUE'='red', 'FALSE'='white'),
labels=list('TRUE'='High SD', 'FALSE'='Low SD'))