我有以下数据集:
a<-data.frame(time=c("before","after","before","after"),
company=c(1,1,2,2),
value=c(3.751522,4.776224,3.838707,2.644144 ))
我想创建一个绘图,其中条形图在左侧Company 1上描绘“ before”和“ after”值。同时,公司2的“之前”和“之后”值位于图的右侧。 因此,在y轴上应为变量“值”,但在x轴上应为“前”和“后”两次,因为公司1在左侧,公司2在右侧。
我尝试了以下代码:
ggplot(data=a, aes(time,company,group=interaction(company, time)))+
geom_col(aes(y=value))
不幸的是,它只会在忽略公司名称的“之前”和“之后”时间段内产生变量“值”的总和。
将其作为两个单独的图进行处理,然后使用grid.arrange()会比最初在一个图形中简单地绘制它占用更多的空间。
答案 0 :(得分:1)
ArgumentError: you can't define an already defined column 'author_id'.
是公司与时间之间的互动,x
是价值。我认为您无需为此在y
中添加任何参数。
geom_col()
甚至更好:
ggplot(data=a, aes(x=interaction(time, company),y=value,fill=interaction(time, company)))+
geom_col()
答案 1 :(得分:1)
当我想像这样拆分图时,我使用facet_grid参数。
library(tidyverse)
a<-data.frame(time=c("before","after","before","after"),
company=c(1,1,2,2),
value=c(3.751522,4.776224,3.838707,2.644144 ))
ggplot(data=a,
aes(x = time %>%
# set time as factor to set order of before, after
factor(levels = c("before", "after")),
y = value))+
geom_col()+
# split graph by company
facet_grid(cols = vars(company))