Ответ 1
Здесь один из способов использования базовой графики.
boxplot(NUMS ~ GRP, data = ddf, lwd = 2, ylab = 'NUMS')
stripchart(NUMS ~ GRP, vertical = TRUE, data = ddf,
method = "jitter", add = TRUE, pch = 20, col = 'blue')
Я использую следующие команды для создания диаграммы рассеяния с дрожанием:
ddf = data.frame(NUMS = rnorm(500), GRP = sample(LETTERS[1:5],500,replace=T))
library(lattice)
stripplot(NUMS~GRP,data=ddf, jitter.data=T)
Я хочу добавить ящики из этих точек (по одной для каждой группы). Я попытался выполнить поиск, но не смог найти код, отображающий все точки (а не только выбросы) и дрожанием. Как я могу это решить. Благодарим за помощь.
Здесь один из способов использования базовой графики.
boxplot(NUMS ~ GRP, data = ddf, lwd = 2, ylab = 'NUMS')
stripchart(NUMS ~ GRP, vertical = TRUE, data = ddf,
method = "jitter", add = TRUE, pch = 20, col = 'blue')
Чтобы сделать это в ggplot2
, попробуйте:
ggplot(ddf, aes(x=GRP, y=NUMS)) +
geom_boxplot(outlier.shape=NA) + #avoid plotting outliers twice
geom_jitter(position=position_jitter(width=.1, height=0))
Очевидно, вы можете настроить аргументы ширины и высоты position_jitter()
по своему вкусу (хотя я бы рекомендовал height=0
, так как дрожание высоты сделает ваш график неточным).
Я написал функцию R с именем spreadPoints() в пакете plotteR
. Пакет может быть установлен непосредственно в вашу библиотеку R с помощью следующего кода:
install.packages("devtools")
library("devtools")
install_github("JosephCrispell/plotteR")
Для приведенного примера я использовал следующий код для генерации приведенного ниже примера.
ddf = data.frame(NUMS = rnorm(500), GRP = sample(LETTERS[1:5],500,replace=T))
boxplot(NUMS ~ GRP, data = ddf, lwd = 2, ylab = 'NUMS')
spreadPointsMultiple(data=ddf, responseColumn="NUMS", categoriesColumn="GRP",
col="blue", plotOutliers=TRUE)
Это незавершенная работа (отсутствие формулы в качестве входных данных неуклюже!), Но она предоставляет неслучайный метод для распределения точек по оси X, который дублируется как скриптовая сводка данных. Посмотрите на исходный код, если вам интересно.
Для решения lattice
:
library(lattice)
ddf = data.frame(NUMS = rnorm(500), GRP = sample(LETTERS[1:5], 500, replace = T))
bwplot(NUMS ~ GRP, ddf, panel = function(...) {
panel.bwplot(..., pch = "|")
panel.xyplot(..., jitter.x = TRUE)})
Символ средней точки по умолчанию был заменен на строку с pch = "|"
, Другие свойства коробки и усов можно настроить с помощью box.umbrella
и box.rectangle
помощью функции trellis.par.set()
. Количество дрожания можно регулировать с помощью переменной с именем factor
где factor = 1.5
увеличивает ее на 50%.