我的数据框长这样:
df <- data.frame(date = c('2016-01-01', '2017-01-01', '2018-01-01', '2019-01-01'),
"alo" = c(10, 11, 12.5, 9),
"bor" = c(18, 20, 23, 19),
"car" = c(100, 125, 110, 102)) %>%
gather(-date, key = "key", value = "value")
我想在同一个图上绘制alo和bor两列的条形图,因此我收集了df。然而,我希望将car列作为线图而不是与其他列一起作为条形图绘制在同一张图上。
目前,我的绘图代码如下:
ggplot(df, aes(date, value, fill = key)) +
geom_bar(stat = 'identity', position = "dodge")
请指导我如何将第三列的柱状图改为折线图。谢谢!
gather
所有列,然后使用适当的数据子集传递给geom_col
和geom_line
。像这样:ggplot() + geom_col(data = df %>% filter(key != "car"), aes(date, value, fill = key), position = "dodge") + geom_line(data = df %>% filter(key == "car"), aes(date, value, group = 1))
- AntoniosKgeom_col(data = . %>% filter(key != "car") .....
,这样你就不必多次定义你的数据框。 - Axeman