facet_share {ggpol} 轴共享分面

2021-10-21 16:54:31 浏览数 (2)

代码语言:javascript复制
# install.packages("ggpol")
library(ggpol)

区间高亮标记

代码语言:javascript复制
# geom_tshighlight 可以用来高亮时间序列中的一个时段
ggplot(economics, aes(x = date, y = unemploy))  
  geom_line()  
  geom_tshighlight(
    aes(xmin = as.Date("01/01/1990", format = "%d/%m/%Y"), 
        xmax = as.Date("01/01/2000", format = "%d/%m/%Y")),
    alpha = 0.005, fill = "yellow")  
  ggtitle(label = "geom_tshighlight 可以用来高亮时间序列中的一个时段")

半箱线图和一半 jitter 散点图

代码语言:javascript复制
# geom_boxjitter 用于绘制混合的箱线图:
# 一半箱线图和一半 jitter 散点图,以及可选的误差线。
df <- data.frame(
  score = rnorm(100, 4, 1), 
  gender = sample(c("M", "F"), 100, replace = TRUE), 
  genotype = factor(sample(1:4, 100, replace = TRUE))
)

# 如果要设置点的填充色, 则需要指定 jitter.shape 为 21-25
ggplot(df)   
  geom_boxjitter(aes(x = genotype, y = score, fill = gender),
                 jitter.shape = 21, jitter.color = NA, 
                 jitter.params = list(height = 0, width = 0.04),
                 outlier.color = NA, errorbar.draw = TRUE)  
  scale_fill_manual(values = c("#fb8072", "#80b1d3"))  
  theme_minimal()  
  ggtitle(label="geom_boxjitter:一半箱线图和一半 jitter 散点图")


# 如果我们关注离群点,想对这些点进行高亮,# 可以设置 outlier.intersect = TRUE,
# 并用 outlier.shape 和 outlier.size 来设置点的形状和大小

# 如果将 boxplot.expand 参数设置为 TRUE,则会隐藏 jitter 点图,
# 其功能就类似于 geom_boxplot 绘制完整的箱线图,但添加了误差线

混淆矩阵

代码语言:javascript复制
## geom_confmat 可以用于绘制混淆矩阵
x <- sample(LETTERS[seq(4)], 50, replace = TRUE)
y <- sample(LETTERS[seq(4)], 50, replace = TRUE)

ggplot()   
  geom_confmat(aes(x = x, y = y), normalize = TRUE, text.perc = TRUE)

轴共享分面

代码语言:javascript复制
##  轴共享分面
#  facet_share 用于生成具有共享轴标签的分面图,由于该函数只是实验性的,
#  目前只支持两个分面共享同一个轴。
#  
#  如果想要将轴以镜像的方式放置,需要将其中一个分面乘上 -1,
#  如果想要水平方式,则将放置在左边的分面乘上 -1,
#  如果是竖直放置,则将下面的分面乘上 -1。
#  但是这样会改变轴标签,需要设置 reverse_num = TRUE

df <- data.frame(sex = sample(c("M", "F"), 1000, replace = TRUE),
                 age = rnorm(1000, 45, 12))
df$age_bins <- cut(df$age, 15)
df$count <- 1
df <- aggregate(count ~ sex   age_bins, data = df, length)

df_h <- df
df_h$count <- ifelse(df_h$sex == "F", df_h$count * -1, df_h$count)

ggplot(df_h, aes(x = age_bins, y = count, fill = sex))   
  geom_bar(stat = "identity")  
  facet_share(~sex, dir = "h", scales = "free", reverse_num = TRUE)   
  coord_flip()  
  scale_fill_manual(values = c("#fb8072", "#80b1d3"))  
  ggtitle(label = "轴共享分面")

0 人点赞