Year <- c(1995, 1995, 1995, 1995, 1996, 1996, 1996, 1996, 1997, 1997, 1997, 1997)
Quarter <- c(1,2,3,4,1,2,3,4,1,2,3,4)
GDP <- c(19,20,23,24,15,16,18,19,34,18,14,19)
df <- data.frame(Year,Quarter,GDP)
Year Quarter GDP
1 1995 1 19
2 1995 2 20
3 1995 3 23
4 1995 4 24
5 1996 1 15
6 1996 2 16
7 1996 3 18
8 1996 4 19
9 1997 1 34
10 1997 2 18
11 1997 3 14
12 1997 4 19
我想得到一个图,其中包含每年总和的积分,以及一条连接这些积分的线。到目前为止,我已经使用
df %>%
ggplot(aes(x=Year, y=GDP))+
stat_summary(fun.y = sum, geom="point")+
theme(axis.text.x = element_text(angle = 90, hjust = 1))
获取每年总和的积分,但是改用geom = "line"
(或什至同时使用两者)会返回错误:
geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?
我如何用两个点(代表总和)和一条连接它们的线来制作该图?谢谢。
编辑1:在group = 1
的{{1}}调用中添加aes()
解决了该问题。 @Ronak Shah提出了两种可能的解决方案,它们可以用于此示例数据框,但不适用于我的项目。将进一步调查。
编辑2:原来我使用的“年份”存储为ggplot
;一旦将其更改为chr
,一切都会按预期进行。
答案 0 :(得分:1)
为什么不先总结然后再绘图?
library(tidyverse)
df %>%
group_by(Year) %>%
summarise(GDP = sum(GDP)) %>%
ggplot() +
aes(Year, GDP) +
geom_point() + geom_line() +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
答案 1 :(得分:0)
检查了相关问题后(对不起,我),在group=1
通话中添加aes()
可解决此问题。
df %>%
ggplot(aes(x=Year, y=GDP, group = 1))+
stat_summary(fun.y = sum, geom="point")+
stat_summary(fun.y = sum, geom="line")+
theme(axis.text.x = element_text(angle = 90, hjust = 1))