#r #ggplot2
#r #ggplot2
Вопрос:
Я пытаюсь построить график IQR без минимума или максимума, и я просто хочу отобразить медиану и IQR. Причина в том, что я работаю с конфиденциальными данными, и отображение выбросов может идентифицировать участников. Мне удалось создать версию приведенного ниже графика, но, как вы можете видеть,» -«, представляющее медиану, не растягивается полностью по столбцам. Можно ли сделать так, чтобы «-» было длиной каждого стержня? Другие пакеты для ответа на этот вопрос приветствуются, также приемлемо, чтобы график был составлен из агрегированных или необработанных данных.
library(ggplot2) library(dplyr) median_IQR lt;- function(x) { data.frame(y = median(x), # Median ymin = quantile(x)[2], # 1st quartile ymax = quantile(x)[4]) # 3rd quartile } iris lt;- mutate(iris, let = rep(c("a","b"), nrow(iris)/2)) p lt;- ggplot(iris, aes(x=Species, y=Sepal.Length, color = let, fill=let )) posn.d lt;- position_dodge(width=0.5) p stat_summary(geom = "crossbar", fun.data = median_IQR, position = 'dodge') stat_summary(geom = "point", fun = "median", position = posn.d, size = 3, col = "black", shape = "_")
Ответ №1:
Переписав первое stats_summary
решение, используя geom function
вместо stat function
:
rm(list = ls()) library(ggplot2) library(dplyr) iris lt;- mutate(iris, let = rep(c("a","b"), nrow(iris)/2)) p lt;- ggplot(iris, aes(x=Species, y=Sepal.Length, color = let, fill=let )) theme_bw() p geom_pointrange(mapping = aes(x=Species, y=Sepal.Length), stat = "summary", fun.min = function(z) {quantile(z,0.25)}, fun.max = function(z) {quantile(z,0.75)}, fun = median, size=1)
Чтобы сгруппировать точки рядом
p boxplot()
Иначе
Комментарии:
1. спасибо за решение, как вы думаете, есть ли в любом случае возможность использовать это в виде прямоугольника вместо линейного графика ?