提问人:Maya Eldar 提问时间:9/15/2022 更新时间:9/15/2022 访问量:331
R:如何以日期为x轴,从两个不同的df对两个小平面ggplot进行分层?
R: how to layer two facet ggplot from two different df with dates as the x axis?
问:
我想将这两者结合起来:来自具有相同 X 轴 (s) 和相同 .
两个图:ggplots
floor_date
facet_wrap
ggplot(averaged_activity,aes(x=date(DATETIME),y=PERCENTAGE), group = POPULATION) +
geom_line(stat = "summary", fun = "mean")+ geom_point(stat = "summary", fun = "mean")+
labs(y="Activity (%)", x = "Date")+
scale_x_date(date_labels="%d/%m/%y",date_breaks ="1 week")+
scale_y_continuous()+
facet_wrap(~POPULATION, ncol=1)
ggplot(info_table, aes(x=floor_date(DATE_OF_METAMORPHOSIS, unit = "week"), group= POPULATION))+
geom_histogram()+facet_wrap(~POPULATION, ncol=1)
我尝试将直方图添加到第一个直方图中,我还尝试创建没有定义数据框的 ggplot 并在几何图形中定义数据帧。但是我尝试的每一种方法都得到了不同的错误,所有关于 r 在查找变量时遇到困难,例如 facet 中的“POPULATION”变量或 group commiss 或 y 轴中的“PERCENTAGE”变量。ggplot
geom_histogram(info_table, aes(x=floor_date(DATE_OF_METAMORPHOSIS, unit = "week"), group= POPULATION))
TNX!
答:
1赞
Bushidov
9/15/2022
#1
这是将两个图形拉在一起的选项。(根据评论,最好在您的问题中包含可重复的示例)
傻瓜数据
set.seed(12)
df1 = data.frame(surname = rep(c("Zaura", "Garin", "Roberts"), 20),
DATETIME = rep(seq(as.Date('2022-01-01'), as.Date('2022-10-01'), by = "2 weeks"), 3),
percentage = sample(seq(50, 300, 50), 60, prob =c(1000, 100, 50, 10, 5, 1), replace = T))
df2 = data.frame(surname = sample(c("Zaura", "Garin", "Roberts"), 50, replace =TRUE),
DATE_OF = sample(seq(as.Date('2022-07-01'), as.Date('2022-09-01'), by = "2 weeks"), 50, prob = c(10,100,1,200,20), replace = TRUE))
个人地块
p1 = ggplot(df1, aes(x=DATETIME, y=percentage))+
geom_line(stat = "summary", fun = "mean")+
geom_point(stat = "summary", fun = "mean")+
facet_wrap(~surname, ncol=1)+
labs(subtitle = "Plot 1")
p2 = ggplot(df2, aes(x=floor_date(DATE_OF, unit= "week")))+
geom_histogram(aes(y = stat(count)))+
facet_wrap(~surname, ncol =1)+
labs(subtitle = "Plot 2")
library(ggpubr)
ggarrange(p1,p2)
将地块合并在一起
合并绘图的一个选项是调用 和 在每个 .另外,这里的一个问题是直方图计数最多约为 10 条,而线条可能有数百条。诀窍是将 here 乘以 10 以使它们叠加点。然后在 中,您可以调用第二个轴并进行逆变换。在我们的例子中,除以 10data=
aes()
geom_
y = stat(count)
scale_y_continuous()
sec.axis = sec_axis(~ . / 10, name = "Count")
ggplot()+
geom_histogram(data=df2, aes(x=floor_date(DATE_OF, unit= "week"), y = stat(count)*10), binwidth = 10)+
geom_line(data=df1, aes(x=DATETIME, y=percentage), stat = "summary", fun = "mean")+
geom_point(data=df1, aes(x=DATETIME, y=percentage), stat = "summary", fun = "mean")+
scale_y_continuous("Percentage (%)", sec.axis = sec_axis(~ . / 10, name = "Count"))+
facet_wrap(~surname, ncol=1)+
labs(x="Date")
评论