配对折线图
配对折线图(Paired Line Chart)是一种用于展示两组相关数据变化趋势的图表。这种图表通常用于比较两个相关变量之间的关系,例如时间的推移、两个实验条件下的结果等。以下是配对折线图的详细介绍:
结构和特点:
-
两组数据集: 配对折线图展示两组数据集的趋势,每组数据都有自己的折线,而这两条折线是成对出现的。
-
坐标轴: 通常,横轴表示时间、事件或者实验条件等,纵轴表示相关变量的数值。两个数据集的折线分别在同一坐标系中展示。
-
连接线: 每组数据集中相同位置的数据点通过一条连接线相连,突显了两组数据之间的关系。这种连接方式有助于直观地比较两组数据的趋势。
-
数据点标记: 每个数据点通常会标记相应的数值,以便更清晰地了解每个时间点或条件下的具体数值。
用途和应用场景:
-
比较趋势: 配对折线图主要用于比较两组相关数据的趋势。例如,可以用于比较两个产品在不同市场中的销售情况,或者比较同一产品在不同时间段内的销售表现。
-
变化关系: 通过配对折线图,可以观察到两组数据之间的变化关系。这对于分析实验条件的效果、市场趋势的演变等方面非常有帮助。
-
对比效果: 通过直观地比较两组数据的走势,可以更容易地看出它们之间的差异。这有助于决策者更好地理解数据并制定相应的策略。
制作注意事项:
-
数据匹配: 确保两组数据点在横轴上的位置是相互对应的,以便能够正确地呈现两组数据之间的关系。
-
清晰标注: 给图表添加标题、轴标签和图例,确保读者能够理解图表中呈现的信息。
-
颜色选择: 使用明显区分的颜色或样式来区分两组数据,以确保观众能够轻松区分它们。
-
趋势分析: 在图表中标记出趋势的重要点,例如峰值、谷值或趋势的转折点,以帮助观众更容易地分析数据。
总体而言,配对折线图是一种强大的工具,可用于直观地比较两组相关数据的变化趋势,从而支持数据驱动的决策和分析。
参考脚本
library(tidyverse)
H <- tibble(Triplet = str_c('Triplet', 1:7, sep = ' '),
From = c(rep('Zambia', 4), rep('South Africa', 3)),
`Group A` = c('28/1687 (1.64)',
'33/2086 (1.57)',
'23/1695 (1.36)',
'41/2013 (2.04)',
'36/1507 (2.35)',
'26/1808 (1.43)',
'13/2195 (0.57)'),
`Group B` = c('19/1979 (0.94)',
'29/2408 (1.20)',
'22/1687 (1.30)',
'19/1698 (1.13)',
'33/1811 (1.80)',
'26/2078 (1.24)',
'10/2488 (0.40)'),
`Group C` = c('24/2054 (1.17)',
'33/2262 (1.48)',
'29/1811 (1.63)',
'37/1561 (2.39)',
'28/1304 (2.15)',
'32/1375 (2.31)',
'14/2195 (0.59)'))
H
以上数据不符合 ggplot2 绘图要求,使用 tidyverse 进行数据格式转换这里的重点:
1.长格式与宽格式数据的转换: gather()
2.一列拆分成多列: separate()
library(tidyr)
H<- gather(H, key = Group, value = Value, 3:5) %>%
separate(col = Value, # 拆分这一列
sep = ' ', # 分割符
into = c('Number', 'Ratio')) %>% # 分割成的两列
separate(col = Number,
sep = '/', into = c('Num', 'Total')) %>%
mutate(Ratio = as.numeric(str_remove_all(Ratio, '\\(|\\)')),
Num = as.numeric(Num),
Total = as.numeric(Total))
H
画图,这里的重点是: 不同 Group 的标签分别向左右偏移,所以需要分开画
library(ggrepel)
library(ggsci)
library(cowplot)
p1 <- ggplot(data = filter(H, Group %in% c('Group A', 'Group C')),
aes(x = Group, y = Ratio, color = Triplet)) +
geom_line(aes(group = Triplet)) +
geom_point(aes(size = Num)) +
geom_text_repel(data = filter(H, Group == 'Group A'),
nudge_x = -0.15,
show.legend = F,
color = 'black',
segment.size = 0,
aes(label = str_remove(Triplet, 'Triplet '))) +
geom_text_repel(data = filter(H, Group == 'Group C'),
nudge_x = 0.15,
show.legend = F,
color = 'black',
segment.size = 0,
aes(label = str_remove(Triplet, 'Triplet '))) +
scale_color_jco() +
scale_size(name = 'No. of Envents:',
breaks = seq(10, 40, 10),
labels = seq(10, 40, 10),
limits = c(10, 50),
range = c(1, 4)) +
scale_y_continuous(expand = c(0, 0), limits = c(0, 2.5)) +
labs(x = '', y = 'H Infections\n(per 100 persons)') +
theme_half_open()
p2 <- ggplot(data = filter(H, Group %in% c('Group A', 'Group B')),
aes(x = Group, y = Ratio, color = Triplet)) +
geom_line(aes(group = Triplet)) +
geom_point(aes(size = Num)) +
geom_text_repel(data = filter(HIV, Group == 'Group A'),
nudge_x = -0.15,
color = 'black',
segment.size = 0,
show.legend = F,
aes(label = str_remove(Triplet, 'Triplet '))) +
geom_text_repel(data = filter(H, Group == 'Group B'),
nudge_x = 0.15,
color = 'black',
segment.size = 0,
show.legend = F,
aes(label = str_remove(Triplet, 'Triplet '))) +
scale_color_jco() +
scale_size(name = 'No. of Envents:',
breaks = seq(10, 40, 10),
labels = seq(10, 40, 10),
limits = c(10, 50),
range = c(1, 4)) +
scale_y_continuous(expand = c(0, 0), limits = c(0, 2.5)) +
labs(x = '', y = 'H Infections\n(per 100 persons)') +
theme_half_open()
网友评论