боксы ggplot с названиями столбцов по оси x - PullRequest
0 голосов
/ 18 сентября 2018

Я хотел бы создать четыре бокса рядом друг с другом с названиями столбцов на оси х.У меня нет большого опыта работы с блокпостами в ggplot, и я не уверен, как мои данные должны быть структурированы для получения названий столбцов с соответствующими блокпостами в качестве факторов на оси х.

Меня особенно интересует, как уось будет обработана в этом случае.

col1<- c(0.43,0.78,-0.26,0.5,0.6,0.78,-0.2,0.1)
col2<- c(0.23,0.48,-0.76,0.1,0.9,0.73,-0.7,0.2)
col3<- c(0.83,0.18,-0.96,0.9,0.2,0.18,-0.79,0.3)
col4<- c(0.23,0.98,-0.16,0.4,0.3,0.49,-0.2,0.2)

test<-data.frame(col1,col2,col3,col4)

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

В ggplot2 требуется «длинный», а не широкий формат данных.Полный пример:

library(ggplot2)
col1<- c(0.43,0.78,-0.26,0.5,0.6,0.78,-0.2,0.1)
col2<- c(0.23,0.48,-0.76,0.1,0.9,0.73,-0.7,0.2)
col3<- c(0.83,0.18,-0.96,0.9,0.2,0.18,-0.79,0.3)
col4<- c(0.23,0.98,-0.16,0.4,0.3,0.49,-0.2,0.2)
df <- rbind(
    data.frame(name='col1', values=col1),
    data.frame(name='col2', values=col2),
    data.frame(name='col3', values=col3),
    data.frame(name='col4', values=col4))
ggplot(df, aes(x=name, y=values)) + geom_boxplot()

Здесь df представляет «длинный» формат данных, где каждое измерение находится в отдельной строке.

0 голосов
/ 18 сентября 2018

Вы можете преобразовать свои данные в длинный формат, используя функцию melt() пакета reshape2, а затем использовать пакет ggplot2 для построения графика:

library(reshape2)
library(ggplot2)

col1<- c(0.43,0.78,-0.26,0.5,0.6,0.78,-0.2,0.1)
col2<- c(0.23,0.48,-0.76,0.1,0.9,0.73,-0.7,0.2)
col3<- c(0.83,0.18,-0.96,0.9,0.2,0.18,-0.79,0.3)
col4<- c(0.23,0.98,-0.16,0.4,0.3,0.49,-0.2,0.2)

test<-data.frame(col1,col2,col3,col4)

test2 <- melt(test)

ggplot(test2, aes(x = variable, y = value)) +
  geom_boxplot()

enter image description here

...