绘制带散点的折线图

有多组数据需要观察数据的演变趋势时可以通过绘制带散点的折线图予以展示。下面介绍一个实例。

1. 原始数据:line_chart_with_scatter_points.txt

line_chart_with_scatter_points.txt

2. R代码

a. 读取原始数据

用melt函数整理成作图所需的长数据格式,用aggregate函数得到作折线图所需的各组均值数据。

library(reshape2)
library(ggplot2)
library(ggbeeswarm)

time_group <- melt(read.table("line_chart_with_scatter_points.txt", sep="\t", header=TRUE, stringsAsFactors=TRUE, fileEncoding = "utf-8"), id.vars="组别", variable.name="观察时间", value.name="分值")
line_data <- aggregate(分值~观察时间+组别, time_group, mean)
b. 添加楷体格式
library(showtext)
font_add("Kaiti", "C:/Windows/Fonts/simkai.ttf")
showtext_auto()
c. 作图

用geom_beeswarm做蜂群散点图的好处在于可以将原始重合的点通过增加随机偏移量而错开。

p <- ggplot() + 
     geom_beeswarm(data=time_group, aes(x=观察时间, y=分值, colour=组别), size=1.5) + 
     geom_line(data=line_data, aes(x=观察时间, y=分值, group=组别, colour=组别), linewidth=0.8) + 
     theme_bw()+ 
     theme(panel.grid.major=element_line(colour=NA),
           panel.background = element_rect(fill = "transparent",colour = NA),
           plot.background = element_rect(fill = "transparent",colour = NA),
           panel.grid.minor = element_blank(),
           axis.title = element_text(size=rel(1.2), family = 'Kaiti'),
           axis.text=element_text(size=rel(0.7), family = 'Kaiti'),
           legend.text=element_text(size=rel(1), family = 'Kaiti'),
           legend.title=element_text(size=rel(1.5), family = 'Kaiti'),
           legend.spacing.x = unit(0, "pt"))
d. 保存图形
ggsave("line_chart_with_scatter_points.tiff", p)
line_chart_with_scatter_points.tiff
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容