#r #boxplot #axis-labels #r-raster
Вопрос:
У меня есть график из приведенного ниже кода, и я хочу добавить медианные значения.
boxplot(ndvi_pct_sep~edge_direction, data= data_sample, subset = edge_direction %in% c(64,4, 1,16),ylab="NDVI2028-2016", xlab="Forest edge direction",names=c("north", "south", "east", "west"))
. Я хочу добавить медианные значения в боковые диаграммы, есть идеи, как это сделать?
Комментарии:
1. Не могли бы вы привести нам пример использования ваших данных
dput()
или, если они очень большиеdput(head(df,5))
Ответ №1:
Скорее всего, это будет связано с использованием легенд — поскольку у меня нет ваших данных, я не могу сделать их идеальными, но приведенный ниже код должен помочь вам начать использовать данные о росте зубов, содержащиеся в R. Я показываю базовый пример R и ggplot (я знаю, что вы сказали, что ggplot нет, но другие могут его использовать).
# Load libraries library(dplyr); library(ggplot2) # get median data mediandata lt;- ToothGrowth %gt;% group_by(dose) %gt;% summarise(median = median(len, na.rm = TRUE)) l lt;- unname(unlist(mediandata)) tg lt;- ToothGrowth # for convenience tg$dose lt;- as.factor(tg$dose) ### Base R approach boxplot(len ~ dose, data = tg, main = "Guinea Pigs' Tooth Growth", xlab = "Vitamin C dose mg", ylab = "tooth length", col = "red") for (i in 1:3){ legend(i-0.65,l[i 3] 5, legend = paste0("Median: ",l[i 3]), bty = "n") } ### ggplot approach ggplot(data = tg, aes(dose, len)) theme_classic() theme(legend.position = "none") geom_boxplot() annotate("text", x = c(1,2,3), y = l[4:6] 1, # shit so you can read it label = l[4:6])
Ответ №2:
Вот простое решение с text
for
циклом и без него:
Данные об игрушках:
set.seed(12) df lt;- data.frame( var1 = sample(LETTERS[1:4], 100, replace = TRUE), var2 = rnorm(100) )
Вычислите медианы:
library(dplyr) med lt;- df %gt;% group_by(var1) %gt;% summarise(medians = median(var2)) %gt;% pull(medians)
В качестве альтернативы, в base R
:
bx lt;- boxplot(df$var2 ~ df$var1) med lt;- bx$stats[3,1:4]
Коробочная схема:
boxplot(df$var2 ~ df$var1)
Аннотировать бокс-графики:
text(1:4, med, round(med,3), pos = 3, cex = 0.6)