Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中用折线图覆盖条形图?_R_Ggplot2_Subset - Fatal编程技术网

如何在R中用折线图覆盖条形图?

如何在R中用折线图覆盖条形图?,r,ggplot2,subset,R,Ggplot2,Subset,我希望根据几周的数据,搁置多年。我希望最近一年(2020年)是酒吧聊天,前几年(2019年和2018年)是线路图 我当前的代码生成下面的视觉效果 data %>% ggplot(aes(week, result, fill = year)) + geom_col() 如果我想把所有这些年都做成条形图,我知道我可以在geom_col中使用“dodge”。然而,我正在尝试将数据分成不同的geom 当我使用subset函数(下面的代码)时,我的图表发生了一些奇怪的事情,我无法理解到底

我希望根据几周的数据,搁置多年。我希望最近一年(2020年)是酒吧聊天,前几年(2019年和2018年)是线路图

我当前的代码生成下面的视觉效果

data %>%
  ggplot(aes(week, result, fill = year)) +
  geom_col()

如果我想把所有这些年都做成条形图,我知道我可以在geom_col中使用“dodge”。然而,我正在尝试将数据分成不同的geom

当我使用subset函数(下面的代码)时,我的图表发生了一些奇怪的事情,我无法理解到底发生了什么

data %>%
  ggplot(aes(week, result, fill = year)) +
  geom_col(data = subset(data, year == 2020)) +
  geom_line(data = subset(data, year != 2020))

下面是我正在使用的数据示例。你知道我做错了什么吗

structure(list(year = c("2018", "2018", "2019", "2019", "2020", 
"2020"), week = c(1L, 2L, 1L, 2L, 1L, 2L), result = c(6.88475831020016, 
7.62267452779933, 3.67553313593328, 6.18354398162893, 2.38101968527051, 
5.9596355812872)), .Names = c("year", "week", "result"), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))

我不确定您的错误在哪里,但我的虚拟示例模仿了您的示例,我只是在
aes
中添加
颜色
,以便按年份对行进行分组,其余代码与您的代码类似:

ggplot(df,aes(x=周,y=值,
颜色=年平均系数,
填充=作为系数(年)))+
地理坐标(数据=子集(df,年份==2020))+
geom_线(数据=子集(df,年份!=2020))

数据


df Hi mf17,欢迎来到SO!与其发布数据的图像,不如通过以下链接提供数据集的可复制示例:。它使人们更容易帮助你。你的数据中的年份是字符,但你是根据数字进行分组的。谢谢你的快速响应!您提供的代码适用于我的完整数据集。我发现我遇到的问题更多地与我的数据结构有关,而不是与ggplot有关。基本上,我是在运行ggplot代码之前过滤数据帧的。当我根据标准对我的数据进行子集设置时,它正在查看原始数据框,即预过滤器。这会添加更多的数据行,并在生成视觉效果时导致错误。现在我想起来似乎很明显!不客气,我根据您提供的数据编辑了我的答案,以提供另一种方式