我在使用ggplot和用作输入的数据框方面有些挣扎。我有一个像这样的数据框A
:
x y
1 0 50.825022
2 1 44.154257
3 0 50.116500
4 1 46.027000
5 0 55.905105
6 1 50.753209
7 0 44.804500
8 1 42.894000
9 0 15.030799
10 1 11.881330
11 0 21.456833
12 1 18.942833
13 0 5.664676
14 1 3.350577
,我想将每对行与一条线一起绘制。例如,我想在同一图上将第1行(x = 0和y = 50.825002)和第2行(x = 1和y = 44.154257)的数据点绘制在一起,并用一条线链接两个数据点。对3-4和5-6等是相同的东西。
这个想法是要获得7个不同的地块,我可以分别导出它们。为了说明这一点,前两行的第一张图将是:
如果有人可以用ggplot提示我这个技巧,我将非常感激。谢谢。
以下是需要复制和粘贴的数据框:
structure(list(x = c(0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L,
0L, 1L, 0L, 1L), y = c(50.8250223621947, 44.1542573925467, 50.1165,
46.027, 55.9051046135438, 50.753208962261, 44.8045, 42.894, 15.0307991170913,
11.8813302333097, 21.4568333333333, 18.9428333333333, 5.66467592950172,
3.35057697360927)), .Names = c("x", "y"), class = "data.frame", row.names = c(NA,
-14L))
答案 0 :(得分:2)
假设df
是您发布的数据集。
一种方法是创建一个数据集,该数据集将包含一列图,这些图也将以PDF文件的形式保存在您的工作目录中。
library(tidyverse)
df2 = df %>%
group_by(g = cumsum(1-x)) %>% # apply a grouping for every two rows; (0,1) pairs
nest() %>% # nest data
mutate(p = map(data, ~ggplot(., aes(x,y))+ # create a plot for each group
geom_point()+
geom_line()),
ppdf = map2(p,g, ~ggsave(filename = paste0(.y,".pdf"), plot=.x, device = "pdf"))) # save that plot in your working directory
df2
# # A tibble: 7 x 4
# g data p ppdf
# <dbl> <list> <list> <list>
# 1 1 <tibble [2 x 2]> <S3: gg> <NULL>
# 2 2 <tibble [2 x 2]> <S3: gg> <NULL>
# 3 3 <tibble [2 x 2]> <S3: gg> <NULL>
# 4 4 <tibble [2 x 2]> <S3: gg> <NULL>
# 5 5 <tibble [2 x 2]> <S3: gg> <NULL>
# 6 6 <tibble [2 x 2]> <S3: gg> <NULL>
# 7 7 <tibble [2 x 2]> <S3: gg> <NULL>
如果执行df2$p[[1]]
等操作,您可以看到这些图。但是您也可以在工作目录中将它们作为pdf格式。
另一种解决方案是将它们全部并排绘制:
df %>%
mutate(g = cumsum(1-x)) %>%
ggplot(aes(x,y))+
geom_point()+
geom_line()+
facet_wrap(.~g)
当然,您可以更新绘图以使其完全符合您的喜好。