Использование ggplot для создания коробочных диаграмм для всех столбцов в наборе данных по одной зависимой переменной

#r #ggplot2

Вопрос:

Большое вам спасибо, ребята, за вашу помощь, я студент R и работаю с набором данных, касающихся диагностики рака молочной железы, в этом наборе данных есть переменная, которую я переименовал в «класс», которая классифицирует, есть ли у пациенток рак (1) или нет (0), и есть 30 независимых числовых переменных, которые будут использоваться для прогнозирования того, есть ли у пациентки рак или нет., Я работаю над графическим описанием данных, и я хотел бы создать прямоугольную диаграмму для каждой независимой переменной по сравнению с переменной «класс», но я хочу, чтобы она была такой, чтобы у меня был макет 6×5 или 5×6 с каждой независимой переменной по сравнению с классом, и я хочу, чтобы ось y регулировалась для масштаба каждой независимой переменной

это код для набора данных

 web_db<-read.csv("https://raw.githubusercontent.com/stedy/Machine-Learning-with-R-datasets/master/wisc_bc_data.csv")
web_db$y<-ifelse(web_db$diagnosis=="M",1,0)
web_db<-web_db[,-c(1:2)]
names(web_db)[31] <- "class"
web_db$class<-as.factor(web_db$class)

 

Я попробовал этот фрагмент кода:

 ggplot(stack(web_db), aes(x = ind, y = values))  
  geom_boxplot()
 

но он не отображает то, что я хочу, то, что я хочу, — это что-то вроде следующего отдельного графика, но в макете 6×5 или 5×6 с каждой независимой переменной в каждом слоте.

 ggplot(web_db,aes(class,radius_mean))  
  geom_boxplot()
 

Большое вам спасибо, ребята, за всю помощь!!!!!

Ответ №1:

Вы хотите увидеть что-то подобное ?

введите описание изображения здесь

код;

 library(dplyr)
library(reshape2)

web_db  %>%
melt(id.vars = 'class') %>%
ggplot(aes(x=class,y=value)) 
geom_boxplot(aes(color=class)) 
facet_wrap(~variable,scales = "free_y") 
theme(axis.title = element_text(size=2))
 

Комментарии:

1. Привет, Самет, спасибо за твой ответ, это то, что я искал! Спасибо за ваше время У меня есть вопрос, почему нам нужно изменить форму? есть ли способ сделать это без этого? и во-вторых, почему на оси x «класс» не выделяется по x=1 и x=0?

2. @R_Student Вы можете удалить их, удалив aes(color=class) тег. Я изменил данные, потому что aes ggplot имеет один аргумент x, и он должен представлять все переменные, которые вы хотите показать. Затем я превратил их по частям facet_wrap . Не забудьте одобрить ответ, если это исправит вашу проблему 🙂

3. @R_Student Я снова отредактировал код и построил вывод, теперь ось x показывает class переменную