Как изменить ось х (для масштабирования) боксплота в R - PullRequest
0 голосов
/ 14 ноября 2018

Я новичок в R, и у меня возникли некоторые проблемы в решении этой проблемы.

У меня есть следующая таблица / фрейм данных:

enter image description here

Я пытаюсь сгенерировать блокпост, подобный этому:

enter image description here

Однако я хочу, чтобы ось X была масштабирована в соответствии сна метки 1000, 2000, 5000 и т. д.

Итак, я хочу, чтобы расстояние между 1000 и 2000 отличалось от расстояния между 50000 и 100000, поскольку точное расстояние не совпадает.Можно ли сделать это в R?

Спасибо всем и хорошего дня!

1 Ответ

0 голосов
/ 14 ноября 2018

Может быть, попытаться преобразовать набор данных в этот формат, то есть как целые числа в столбце, а не заголовок заголовка?

# packages
library(ggplot2)
library(reshape2)

# data in ideal format
dt <- data.frame(x=rep(c(1,10,100), each=5),
                 y=runif(15))

# data that we have. Use reshape2::dcast to get data in to this format
dt$id <- rep(1:5, 3) 
dt_orig <- dcast(dt, id~x, value.var = "y")
dt_orig$id <- NULL
names(dt_orig) <- paste0("X", names(dt_orig))

# lets get back to dt, the ideal format :)
# melt puts it in (variable, value) form. Need to configure variable column
dt2 <- melt(dt_orig)

# firstly, remove X from the string
dt2$variable <- gsub("X", "", dt2$variable)

# almost there, can see we have a character, but need it to be an integer
class(dt2$variable)
dt2$variable <- as.integer(dt2$variable)

# boxplot with variable X axis
ggplot(dt2, aes(x=variable, y=value, group=variable)) + geom_boxplot() + theme_minimal()

Базовый способ преобразования данных: https://www.statmethods.net/management/reshape.html

...