【用途】
Rのggplot2の便利な拡張パッケージの存在を覚えているが, 名前を思い出せなくて, 関連ワードで頑張ってググって探し出すために時間を使ってしまうことがある. そんなときのために簡単に思い出すためのメモ.
【内容】
たまに使うけれど, 名前を忘れがちなパッケージを記録.
ちなみに, “ggplot2 extension”などで検索すると以下のサイトがヒットし, ここではggplot2の拡張が数多く紹介されている.
https://exts.ggplot2.tidyverse.org/gallery/
このへんを参考にしつつメモしておく.
{tidyverse}パッケージ読み込み.
library(tidyverse)
ペンギンのデータ使用のためパッケージ読み込み.
library(palmerpenguins)
str(penguins)
## tibble [344 x 8] (S3: tbl_df/tbl/data.frame)
## $ species : Factor w/ 3 levels "Adelie","Chinstrap",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ island : Factor w/ 3 levels "Biscoe","Dream",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ bill_length_mm : num [1:344] 39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ...
## $ bill_depth_mm : num [1:344] 18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ...
## $ flipper_length_mm: int [1:344] 181 186 195 NA 193 190 181 195 193 190 ...
## $ body_mass_g : int [1:344] 3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ...
## $ sex : Factor w/ 2 levels "female","male": 2 1 1 NA 1 2 1 2 NA NA ...
## $ year : int [1:344] 2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...
df_penguins <-
penguins %>% mutate(
year = as.factor(year)
)
データの関係性の全体的な可視化
{GGally}パッケージ
GGally::ggpairs(df_penguins)
GGally::ggpairs(df_penguins, aes(colour=species,alpha=0.8))
相関係数行列の可視化
{ggcorrplot}パッケージ
pen_corr <- df_penguins %>%
select(bill_length_mm, bill_depth_mm, flipper_length_mm, body_mass_g) %>%
drop_na(everything())
corr <- cor(pen_corr)
ggcorrplot::ggcorrplot(corr)
欠損データの可視化
{naniar}パッケージ
欠損データ, 欠測データの状況を可視化.
naniar::vis_miss(df_penguins)
naniar::gg_miss_var(df_penguins)
naniar::gg_miss_upset(df_penguins)
色覚多様性のための色使い
{viridis}パッケージ
library(viridis)
ggplot(df_penguins, aes(x=species,y=flipper_length_mm,fill=species))+
geom_boxplot() +
scale_fill_viridis_d() +
scale_colour_viridis_d() +
theme_bw()
ggplot(df_penguins, aes(x=bill_length_mm, y=bill_depth_mm, colour=species, shape=island)) +
geom_point(size=2) +
scale_color_viridis_d() +
theme_bw()
Publication 向けのプロット
{ggpubr}パッケージ
ggpubr::ggboxplot(df_penguins, x = "species", y = "flipper_length_mm",
color = "species", add = "jitter", shape = "species")
{ggthemes}パッケージ
Excel風のテーマ.
ggplot(df_penguins, aes(x=bill_length_mm, y=bill_depth_mm, colour=species, shape=island)) +
geom_point(size=2) +
ggthemes::theme_excel_new()
Stata風のテーマ.
ggplot(df_penguins, aes(x=bill_length_mm, y=bill_depth_mm, colour=species, shape=island)) +
geom_point(size=2) +
ggthemes::theme_stata()
{ggsci}パッケージ
df_ave_mass_penguins <- df_penguins %>%
group_by(species, island) %>%
summarise(
ave_body_mass_g = mean(body_mass_g,na.rm=TRUE)
) %>%
mutate(species_island=str_c(species,"-",island))
JAMA風の配色.
ggplot(df_ave_mass_penguins, aes(x=species_island, y=ave_body_mass_g, fill=species_island)) +
geom_bar(stat="identity") +
ggsci::scale_fill_jama()
Lancet風の配色.
ggplot(df_ave_mass_penguins, aes(x=species_island, y=ave_body_mass_g, fill=species_island)) +
geom_bar(stat="identity") +
ggsci::scale_fill_lancet()
NEJM風の配色.
ggplot(df_ave_mass_penguins, aes(x=species_island, y=ave_body_mass_g, fill=species_island)) +
geom_bar(stat="identity") +
ggsci::scale_fill_nejm()
simpsons風の配色.
ggplot(df_ave_mass_penguins, aes(x=species_island, y=ave_body_mass_g, fill=species_island)) +
geom_bar(stat="identity") +
ggsci::scale_fill_simpsons()
{ggtech}パッケージ
twitter風の配色.
# devtools::install_github("ricardo-bion/ggtech")
ggplot(df_ave_mass_penguins, aes(x=species, y=ave_body_mass_g, fill=species)) +
geom_bar(stat="identity") +
ggtech::scale_fill_tech(theme = "twitter")
{ggExtra}パッケージ
plotを複数並べる.
library(wooldridge) # appleデータを使用するため
## Warning: package 'wooldridge' was built under R version 4.0.5
pp_apple <- ggplot(data = apple, aes(x = reglbs, y = ecolbs)) +
geom_point(color = "red") + theme_bw()
ggExtra::ggMarginal(pp_apple, margins = "x", col = "blue")
ggExtra::ggMarginal(pp_apple, margins = "both", size = 5, type = "histogram",
col = "blue", fill = "orange")
{survminer}パッケージ
生存曲線をggplot2の形で描く.
library(survival)
fit_surv <- survfit(Surv(exit, event) ~ sex, data = eha::child)
survminer::ggsurvplot(fit_surv, data=eha::child,
risk.table = TRUE, tables.theme = survminer::theme_cleantable())
fit_surv <- survfit(Surv(time, status) ~ rx, data = survival::rats)
survminer::ggsurvplot(fit_surv, data=survival::rats, ncensor.plot = TRUE, pval = TRUE, pval.method = TRUE,
risk.table = TRUE, tables.theme = survminer::theme_cleantable())
{ggmap}パッケージ
ハドリー召喚.
ggmap::ggimage(ggmap::hadley)