Я бы хотел поставить перпендикулярные линии на концах усов, как функция boxplot
автоматически дает.Положить концы усов на коробку
ответ
Возможно, можно использовать stat_boxplot
для вычисления концов усов, но мне не хватает мастера ggplot2
, поэтому я использую базовую функцию для этого.
set.seed(42)
df <- data.frame(cond = factor(rep(c("A","B"), each=500)),
value = c(rnorm(500,mean=1,sd=0.2),rnorm(500, mean=1.5,sd=0.1)))
whisk <- function(df,cond_col=1,val_col=2) {
require(reshape2)
condname <- names(df)[cond_col]
names(df)[cond_col] <- "cond"
names(df)[val_col] <- "value"
b <- boxplot(value~cond,data=df,plot=FALSE)
df2 <- cbind(as.data.frame(b$stats),c("min","lq","m","uq","max"))
names(df2) <- c(levels(df$cond),"pos")
df2 <- melt(df2,id="pos",variable.name="cond")
df2 <- dcast(df2,cond~pos)
names(df2)[1] <- condname
df2
}
library(ggplot2)
plot1 <- ggplot(df, aes(x=cond))
plot1 <- plot1 + geom_errorbar(aes(ymin=min,ymax=max),data=whisk(df),width = 0.5)
plot1 <- plot1 + geom_boxplot(aes(y=value))
plot1
Как намекнул, но не выполняется @Roland, вы можете использовать stat_boxplot
осуществить это. Трюк, вызывающий _boxplot
два раза и должен установить geom
на errorbar
для одного из вызовов.
Обратите внимание, что, поскольку R
использует ручку и бумажный подход, рекомендуется внедрить бары ошибок сначала нарисовать традиционную коробку над вершиной.
Использование @ фиктивных данных Роланда df
ggplot(df, aes(x=cond, y = value)) +
stat_boxplot(geom ='errorbar') +
geom_boxplot() # shorthand for stat_boxplot(geom='boxplot')
помощь для stat_boxplot
(?stat_boxplot
) подробно различные значения, вычисленные и сохраненные в data.frame
Спасибо, что нашли время, чтобы объяснить это! :) – gaelgarcia
Как изменить размер этих строк вискеров, если я использую 'geom_boxplot (width = .2)'? – Produnis
@ Produnis Чтобы изменить размер линий нитевидных кристаллов, добавьте аргумент 'stat_params = list (width = 0.5)' внутри функции: 'stat_boxplot'. Посмотрите результат в моем ответе. – mpalanco
Чтобы изменить размер усов линий, которые мы можем используйте аргумент width = 0.5
в функции: stat_boxplot
set.seed(42)
df <- data.frame(cond = factor(rep(c("A", "B"), each = 500)),
value = c(rnorm(500, mean = 1, sd = 0.2),
rnorm(500, mean = 1.5, sd = 0.1)))
library(ggplot2)
ggplot(df, aes(x = cond, y = value)) +
stat_boxplot(geom = "errorbar", width = 0.5) +
geom_boxplot()
Это не работает для меня; Я получаю 'Ошибка: Неизвестные параметры: stat_params'. Какую версию R вы используете? – Will
@ Могу ли я изменить ответ. Новая версия ggplo2 2.0.0 не принимает этот аргумент 'stat_params'. Теперь это должно сработать. – mpalanco
Отлично, это сработало! Благодаря! – Will
- 1. Сделать boxplot без усов
- 2. Обрезка изображения и положить его в коробку изображения
- 3. Вызов усов аргумент внутри один аргумент усов
- 4. Как правильно спроектировать коробку?
- 5. Концы строк кода Python
- 6. Mysql, очистить свободные концы
- 7. Вставить коробку в коробку с указателем - golang
- 8. Установка счетчика на каждую коробку
- 9. Нарисуйте прозрачную коробку на iPhone
- 10. OpenCV конвертирует концы кантов на контуры
- 11. В MSBuild, как разбить строку на концы?
- 12. Youtube видео концы исчезают
- 13. Объединить концы сетки Кендо
- 14. Mercurial - оставляя свободные концы
- 15. PHP - проверка шаблона усов
- 16. wicked_pdf поддержка рулей/усов
- 17. Соответствующие траектории усов
- 18. динамический просмотр усов
- 19. логика, основанная на результатах усов в algolia
- 20. Как избежать синтаксиса усов?
- 21. Библиотека шаблонов усов?
- 22. Как установить библиотеку усов?
- 23. Устранение усов из boxplot
- 24. Шаблоны усов + Sencha Touch
- 25. Как устранить блоки усов?
- 26. Положить текст на MapView
- 27. положить Leadbolt на Andengine
- 28. Положить статус на товар
- 29. положить приложение на трассировку
- 30. ASP Readline нестандартные концы строк
вы можете сделать это путем расчета квантиля, где ggplot рисует линию и рисунка своего собственного 'geom_segment' или' geom_crossbar'. см. [этот вопрос] (http://stats.stackexchange.com/questions/8137/how-to-add-horizontal-lines-to-ggplot2-boxplot) – Justin
Есть ли причина, почему это должно быть сделано в ggplot2, и не используя 'boxplot', который уже делает то, что вы хотите, или это вопрос чисто академического интереса ...? –
@ Justin Спасибо, я проверил этот вопрос, но он слишком продвинутый для меня, и я продолжаю получать ошибки, я не знаю, какие биты заменить на что, извините:/ – user1762299