Добавление медианного значения в каждое поле (не ggplot)

#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])    

Основание R: Подложка

ggplot: введите описание изображения здесь

Ответ №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)  

введите описание изображения здесь

Ответ №3:

Вы можете сделать

 b lt;- boxplot(count ~ spray, data = InsectSprays, col = "lightgray", boxwex=.2) s lt;- b$stats text(1:ncol(s) .4, s[3,], round(s[3,],1), col="red")  

введите описание изображения здесь