首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ggplot的多次使用

ggplot的多次使用
EN

Stack Overflow用户
提问于 2020-02-27 15:37:35
回答 3查看 66关注 0票数 0

考虑一下

代码语言:javascript
运行
复制
a1<-data.frame(a=c(1,2,3),b=c(45,34,67),c=c(35,56,89),d=c("first"))
a2<-data.frame(a=c(1,2,3),b=c(35,40,60),c=c(30,59,92),d=c("second"))
a3<-data.frame(a=c(1,2,3),b=c(45,38,57),c=c(35,52,91),d=c("third"))

我想使用ggplot制作三个对应于a1、a2和a3的图表/图。每个图表/绘图都应该有x=a和y=b,c。所以每个图表中应该有两行。图表应命名为first、second和third。我该怎么做呢?

我试过了

代码语言:javascript
运行
复制
overall<-list(a1,a2,a3)
plots<-lapply(overall,function(category){o<-melt(category, id = "a", measure = c("b", "c"));
  ggplot(o, aes(a, value, colour = variable)) + geom_line()})

但它只生成一个图。理想情况下,我希望看到三个图,每个图包含两条线,分别对应于数据框a1、a2和a3中的b和c。

EN

回答 3

Stack Overflow用户

发布于 2020-02-27 16:05:29

如果您想使用ggplot2完成此操作,可以选择以下选项:

代码语言:javascript
运行
复制
a1<-data.frame(a=c(1,2,3),b=c(45,34,67),c=c(35,56,89))
a2<-data.frame(a=c(1,2,3),b=c(35,40,60),c=c(30,59,92))
a3<-data.frame(a=c(1,2,3),b=c(45,38,57),c=c(35,52,91))

library(tidyverse)
a <- list(a1,a2,a3)
for (i in seq_along(a)){
  a[[i]] <- as.data.frame(a[[i]]) %>% 
    mutate(plot_name = paste0("a", i))
}

a <- bind_rows(a)
a %>%  pivot_longer(cols =c(b,c)) %>% 
  ggplot(aes(x=a, y=value, group=name)) +
  geom_line(aes(colour = name)) +
  facet_wrap(.~plot_name, nrow =  3)

由reprex包创建于2020-02-27 (v0.3.0)

票数 2
EN

Stack Overflow用户

发布于 2020-02-27 16:31:37

也许更简单一点,也是使用ggplot

代码语言:javascript
运行
复制
library(tidyverse)

df <- bind_rows(a1,a2,a3, .id = "id") %>% 
  gather(`b`, `c`, key = "values", value = "value")

  ggplot(df, aes(a, value, colour = name)) + 
  geom_line() +
  facet_wrap(~id, labeller = labeller(id = c(`1` = "first", `2` = "second", `3` = "third")))

票数 1
EN

Stack Overflow用户

发布于 2020-02-27 16:44:18

您可以使用以下代码从@user213544修改为颜色b和c

代码语言:javascript
运行
复制
library(tidyverse)

a1<-data.frame(a=c(1,2,3),b=c(45,34,67),c=c(35,56,89))
a2<-data.frame(a=c(1,2,3),b=c(35,40,60),c=c(30,59,92))
a3<-data.frame(a=c(1,2,3),b=c(45,38,57),c=c(35,52,91))

df <- bind_rows(a1,a2,a3, .id = "id")

df %>% pivot_longer(-c(a,id)) %>% 
  ggplot(aes(x = a, y = value, colour = name)) + geom_line()+ 
  facet_wrap(~id, labeller = labeller(id = c(`1` = "a1", `2` = "a2", `3` = "a2")))+
  labs(title="Plot title",x="a", y = "b & c")

更新

代码语言:javascript
运行
复制
a1<-data.frame(a=c(1,2,3),b=c(45,34,67),c=c(35,56,89),d=c("first"))
a2<-data.frame(a=c(1,2,3),b=c(35,40,60),c=c(30,59,92),d=c("second"))
a3<-data.frame(a=c(1,2,3),b=c(45,38,57),c=c(35,52,91),d=c("third"))

df <- bind_rows(a1,a2,a3)

df %>% pivot_longer(-c(a, d)) %>% 
  ggplot(aes(x = a, y = value, colour = name)) + geom_line()+ 
  facet_wrap(~d)+
  labs(title="Plot title",x="a", y = "b & c")

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60428339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档