Введение
Написано 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