Arhn - архитектура программирования

График скрипки ggplot2 не в порядке, как в наборе данных по оси x

Я создал файл сюжет скрипки с использованием приведенного ниже кода, но на оси x имена моделей не в том порядке, как в наборе данных (например, "Наблюдается", "SVM ", "Grid_SVM", "MARS", "Grid_Mars", "RF", "Grid_RF"). Где требуется правка в коде?

ggplot(df1, aes(x = Model, y = Pb), cex.lab = 18, cex.axis=18) +
  geom_violin(trim=FALSE, fill = "palegreen") +
  geom_boxplot(width = .12, fill = "orange", outlier.color = "orange", outlier.size = 2) + 
  labs(title = "Pb Adsorption distribution by Models over testing phase") + xlab("Models") + ylab("Pb Adsorption distribution")+ theme_classic() +
  theme(
  plot.title = element_text(size = 12, colour = "black", face = "bold"), #for Main Title
  axis.title.x = element_text(size = 12, colour = "black", face = "bold"), #for axix title
  axis.title.y = element_text(size = 12, colour = "black", face = "bold"),
  axis.text.x = element_text(face="bold", color="darkblue", size=12, angle=0), #for axis tick
  axis.text.y = element_text(face="bold", color="black", size=12, angle=0))

Ответы:


1

По умолчанию ggplot2 отображает векторы символов в алфавитном порядке. Чтобы разместить указанный порядок на вашем графике, просто используйте dplyr и создайте столбец как factor() и укажите желаемые уровни. Затем ggplot2 должен построить его так, как вы хотите.

Редактировать №1 Один из способов — изменить фрейм данных df1 отдельно от вашей строки команд ggplot2. Вы можете сделать это как

df1 <- df1 %>%
  mutate( Model=factor(Model,levels=c("Observed", "SVM", "Grid_SVM", "MARS", "Grid_Mars", "RF", "Grid_RF")) )

А затем вызовите свою строку команд ggplot2, как вы написали выше.

Редактировать №2 (из комментариев ниже)

Если вы хотите передать все и сделать все за один раз, попробуйте

df1 %>%
  mutate( Model=factor(Model,levels=c("Observed", "SVM", "Grid_SVM", "MARS", "Grid_Mars", "RF", "Grid_RF")) ) %>%
  ggplot( aes(x = Model, y = Pb), cex.lab = 18, cex.axis=18) +
  geom_violin(trim=FALSE, fill = "palegreen") +
  geom_boxplot(width = .12, fill = "orange", outlier.color = "orange", outlier.size = 2) + 
  labs(title = "Pb Adsorption distribution by Models over testing phase") + xlab("Models") + ylab("Pb Adsorption distribution")+ theme_classic() +
  theme(
  plot.title = element_text(size = 12, colour = "black", face = "bold"), #for Main Title
  axis.title.x = element_text(size = 12, colour = "black", face = "bold"), #for axix title
  axis.title.y = element_text(size = 12, colour = "black", face = "bold"),
  axis.text.x = element_text(face="bold", color="darkblue", size=12, angle=0), #for axis tick
  axis.text.y = element_text(face="bold", color="black", size=12, angle=0))

Первоначальное предложение состояло в том, чтобы перезаписать данные. Затем сгенерируйте сюжет в новой цепочке.

df1 <- df1 %>%
  mutate( Model=factor(Model,levels=c("Observed", "SVM", "Grid_SVM", "MARS", "Grid_Mars", "RF", "Grid_RF")) )

ggplot( df1, aes(x = Model, y = Pb), cex.lab = 18, cex.axis=18) +
  geom_violin(trim=FALSE, fill = "palegreen") +
  geom_boxplot(width = .12, fill = "orange", outlier.color = "orange", outlier.size = 2) + 
  labs(title = "Pb Adsorption distribution by Models over testing phase") + xlab("Models") + ylab("Pb Adsorption distribution")+ theme_classic() +
  theme(
  plot.title = element_text(size = 12, colour = "black", face = "bold"), #for Main Title
  axis.title.x = element_text(size = 12, colour = "black", face = "bold"), #for axix title
  axis.title.y = element_text(size = 12, colour = "black", face = "bold"),
  axis.text.x = element_text(face="bold", color="darkblue", size=12, angle=0), #for axis tick
  axis.text.y = element_text(face="bold", color="black", size=12, angle=0))

Любой из вышеперечисленных будет работать.

01.05.2020
  • Существует также эстетика order с ggplot2. Я никогда не использовал это, но вы можете попробовать это тоже. 01.05.2020
  • спасибо за оперативный ответ, за первый ответ, как выполнить, будьте добры, опишите или подскажите 01.05.2020
  • Я получил, когда использовал последнее предложение: Ошибка: сопоставление должно быть создано с помощью aes() or aes_(). Run rlang::last_error()`, чтобы увидеть, где произошла ошибка. 01.05.2020
  • Первые три строки: df1 ‹- df1 %›% mutate(Model=factor(Model,levels=c(Observed, SVM, Grid_SVM, MARS, Grid_Mars, RF, Grid_RF))) %›% ggplot(df1, aes(x = Модель, у = Pb)) 01.05.2020
  • Вау, большое спасибо, я воспользовался первоначальным предложением, а затем вызвал ggplot, все отлично работает. Тем не менее, я сохраню и второе предложение, большое спасибо. 01.05.2020
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..