Визуализация R | построение графиков с помощью пакета ggpubr

анализ данных задняя часть

Введение

Написано Hadley Wickham **ggplot2** — это простой в использовании программный пакет, необходимый для инструментов визуализации. Тем не менее, необходимо знать некоторые теории и принципы работы ggplot 2. Для новичков порог входа все еще относительно высок.

иggpubrПакет предоставляет несколько простых в использовании функций, основанных наggplot2Пишите иконки с очень простым синтаксисом. Для тех, кто плохо знаком с R и хочет создавать графы для публикации в R, это действительно полезно!

Статья нижеggpubr: Publication Ready PlotsОбъяснять.

Установить

  • Установить из КРАН:
 install.packages("ggpubr")
  • Установите последнюю версию с GitHub:
 if(!require(devtools))install.packages("devtools")
 devtools :: install_github("kassambara / ggpubr")

Обзор функций визуализации

графика Заказ
карта плотности ggdensity()
коробочный сюжет ggboxplot()
Гистограмма gghistogram()
Фигура скрипки ggdotchart()
гистограмма ggdotchart()
фигурка, фигурка Кливленда ggdotchart()

карта плотности

 library(ggpubr)
 # 构建数据集
 set.seed(1234)
 wdata = data.frame(
    sex = factor(rep(c("F", "M"), each=200)),
    weight = c(rnorm(200, 55), rnorm(200, 58)))
 head(wdata, 4)

图片

  • карта плотности (ggdensity) и средней линии (добавить = "среднее"); по полу("sex")Провести цветовую заливку, присоединиться к краевому ковру(rug = TRUE)И использовать пользовательские панели(palette = c("#00AFBB", "#E7B800")).
 ggdensity(wdata, x = "weight",
    add = "mean", rug = TRUE,
    color = "sex", fill = "sex",
    palette = c("#00AFBB", "#E7B800"))

图片

Далее следует нарисовать гистограмму (gghistogram), остальные параметры аналогичны приведенным выше.

 gghistogram(wdata, x = "weight",
    add = "mean", rug = TRUE,
    color = "sex", fill = "sex",
    palette = c("#00AFBB", "#E7B800"))

коробочный сюжет

 # Load data
 data("ToothGrowth")
 df <- ToothGrowth
 head(df, 4)

图片

по дозе("dose")Заливка цветом; добавление точек дизеринга и дозировка за дозой("dose")Изменить форму.

  p <- ggboxplot(df, x = "dose", y = "len",
                 color = "dose", palette =c("#00AFBB", "#E7B800", "#FC4E07"),
                 add = "jitter", shape = "dose")
  p

图片

Вы также можете сравнить соотношение между средствами разных групп(stat_compare_means(label.y = 50))и добавьте p-значение(stat_compare_means(label.y = 50) ).

 my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") )
 p + stat_compare_means(comparisons = my_comparisons)+ # Add pairwise comparisons p-value
   stat_compare_means(label.y = 50)                   # Add global p-value

图片

Фигура скрипки

На картинке ниже схема скрипки(ggviolin)Сочетание с коробчатыми диаграммами(add = "boxplot"), по дозе("dose")Цветная заливка; добавить белую заливку(add.params = list(fill = "white"))boxplots и добавленные p-значения для каждого группового сравнения.

 ggviolin(df, x = "dose", y = "len", fill = "dose",
          palette = c("#00AFBB", "#E7B800", "#FC4E07"),
          add = "boxplot", add.params = list(fill = "white"))+
   stat_compare_means(comparisons = my_comparisons, label = "p.signif")+ # Add significance levels
   stat_compare_means(label.y = 50)                                      # Add global the p-value

图片

гистограмма

набор данных

использовать здесьmtcarsпостроен в наборе данных.

 data("mtcars")
 dfm <- mtcars
 dfm$cyl <- as.factor(dfm$cyl)
 dfm$name <- rownames(dfm)
 head(dfm[, c("name", "wt", "mpg", "cyl")])

图片

упорядоченная гистограмма

гистограмма (ggbarplot) можно использовать вsort.val = "desc"Сортировать данные от наибольшего к наименьшему и не сортировать по группам (sort.by.groups = FALSE), но все данные отсортированы; поверните метки оси x (x.text.angle = 90). Стоит отметить, что здесь использована цветовая верстка журнала jco (palette = "jco").

 ggbarplot(dfm, x = "name", y = "mpg",
           fill = "cyl",               # change fill color by cyl
           color = "white",            # Set bar border colors to white
           palette = "jco",            # jco journal color palett. see ?ggpar
           sort.val = "desc",          # Sort the value in dscending order
           sort.by.groups = FALSE,     # Don't sort inside each group
           x.text.angle = 90           # Rotate vertically x axis texts
           )

图片

Если сортировать по группам (sort.by.groups = TRUE) , следующее.

 ggbarplot(dfm, x = "name", y = "mpg",
           fill = "cyl",               # change fill color by cyl
           color = "white",            # Set bar border colors to white
           palette = "jco",            # jco journal color palett. see ?ggpar
           sort.val = "asc",           # Sort the value in dscending order
           sort.by.groups = TRUE,      # Sort inside each group
           x.text.angle = 90           # Rotate vertically x axis texts
           )

图片

Карта отклонений

График отклонения показывает отклонение количественного значения от эталонного значения. В приведенном ниже R-коде мы построим вариацию mpgz-оценки (одну из нормализации) из набора данных mtcars.

 # Calculate the z-score of the mpg data
 dfm$mpg_z <- (dfm$mpg -mean(dfm$mpg))/sd(dfm$mpg)
 dfm$mpg_grp <- factor(ifelse(dfm$mpg_z < 0, "low", "high"),
                      levels = c("low", "high"))
 ​
 head(dfm[, c("name", "wt", "mpg", "mpg_z", "mpg_grp", "cyl")])

图片

На основе приведенных выше данных создайте упорядоченную диаграмму, отсортировав значения в порядке возрастания (sort.val = "asc"). Разница между этим и предыдущим блок-графиком заключается в том, что вновь созданныйmpg_grpпеременная в качестве параметра заполнения, которая является фактором (с двумя уровнями,levels = c("low", "high")).

 ggbarplot(dfm, x = "name", y = "mpg_z",
           fill = "mpg_grp",           # change fill color by mpg_level
           color = "white",            # Set bar border colors to white
           palette = "jco",            # jco journal color palett. see ?ggpar
           sort.val = "asc",           # Sort the value in ascending order
           sort.by.groups = FALSE,     # Don't sort inside each group
           x.text.angle = 90,          # Rotate vertically x axis texts
           ylab = "MPG z-score",
           xlab = FALSE,
           legend.title = "MPG Group"
           )

图片

Поверните оси x,y (rotate = TRUE) и отсортировать по убыванию (sort.val = “desc”), как показано на изображении ниже, очень красивом и читабельном.

 ggbarplot(dfm, x = "name", y = "mpg_z",
           fill = "mpg_grp",           # change fill color by mpg_level
           color = "white",            # Set bar border colors to white
           palette = "jco",            # jco journal color palett. see ?ggpar
           sort.val = "desc",          # Sort the value in descending order
           sort.by.groups = FALSE,     # Don't sort inside each group
           x.text.angle = 90,          # Rotate vertically x axis texts
           ylab = "MPG z-score",
           legend.title = "MPG Group",
           rotate = TRUE,
           ggtheme = theme_minimal()
           )

图片

График рассеяния

Иллюстрация леденца

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

 ggdotchart(dfm, x = "name", y = "mpg",
            color = "cyl",                                # Color by groups
            palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette
            sorting = "ascending",                        # Sort value in descending order
            add = "segments",                             # Add segments from y = 0 to dots
            ggtheme = theme_pubr()                        # ggplot2 theme
            )

图片

 ggdotchart(dfm, x = "name", y = "mpg",
            color = "cyl",                                # Color by groups
            palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette
            sorting = "descending",                       # Sort value in descending order
            add = "segments",                             # Add segments from y = 0 to dots
            rotate = TRUE,                                # Rotate vertically
            group = "cyl",                                # Order by groups
            dot.size = 6,                                 # Large dot size
            label = round(dfm$mpg),                        # Add mpg values as dot labels
            font.label = list(color = "white", size = 9,
                              vjust = 0.5),               # Adjust label parameters
            ggtheme = theme_pubr()                        # ggplot2 theme
            )

图片

Карта отклонений

Все еще используя приведенный выше набор данных, постройте график отклонения для серии Lollipop. Измените цвет и размер сегментов линии:add.params = list(color = “lightgray”, size = 2)

 ggdotchart(dfm, x = "name", y = "mpg_z",
            color = "cyl",                                # Color by groups
            palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette
            sorting = "descending",                       # Sort value in descending order
            add = "segments",                             # Add segments from y = 0 to dots
            add.params = list(color = "lightgray", size = 2), # Change segment color and size
            group = "cyl",                                # Order by groups
            dot.size = 6,                                 # Large dot size
            label = round(dfm$mpg_z,1),                        # Add mpg values as dot labels
            font.label = list(color = "white", size = 9,
                              vjust = 0.5),               # Adjust label parameters
            ggtheme = theme_pubr()                        # ggplot2 theme
            )+
   geom_hline(yintercept = 0, linetype = 2, color = "lightgray")

图片

Кливлендский график рассеяния

На основе предыдущего просто добавьте следующий код, чтобы получить точечную диаграмму Кливленда (theme_cleveland()).

 ggdotchart(dfm, x = "name", y = "mpg",
            color = "cyl",                                # Color by groups
            palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette
            sorting = "descending",                       # Sort value in descending order
            rotate = TRUE,                                # Rotate vertically
            dot.size = 2,                                 # Large dot size
            y.text.col = TRUE,                            # Color y text by groups
            ggtheme = theme_pubr()                        # ggplot2 theme
            )+
   theme_cleveland()                                      # Add dashed grids