r - 使用 ggplot2 在同一图中绘制不同年份的两条线

标签 r ggplot2 charts

我试图用折线图比较奥巴马第一年的支持率和特朗普第一年的支持率。

这里的问题是我使用了奥巴马(2009 年)和特朗普(2017 年)两个不同的年份。似乎不知道如何解决这个问题...

rating_comparison %>%
  ggplot(aes(endDate, rating, group = 1)) +
  geom_line(data = filter(rating_comparison, 
                          endDate > "2017-01-28",
                          type == "Overall.A")) +
  geom_line(data = filter(rating_comparison, 
                          president == "Obama" &
                            endDate > "2009-01-25" &
                            endDate < "2010-01-24",
                          type == "Overall.A")) 

enter image description here

最佳答案

我将从您的代码中假设数据如下所示:

president   startDate    endDate  rating       type
    Obama  2017-01-17 2017-01-19      59  Overall.A
    Trump  2017-01-25 2017-01-27      42  Overall.A

我还假设日期列的类型为Date。如果没有,请使用以下内容转换它们:

rating_comparison$endDate <- as.Date(rating_comparison$endDate, "%Y-%m-%d")

一种方法是由总统将每个日期转换为“自第一次约会以来的天数”。然后绘制评分与天数的关系图。当然,这假设“首次投票日期”在某种程度上具有可比性 - 我认为它们等于每个总统任期的第一次投票日期。

例如,要按总统着色,限制为前 365 天:

library(dplyr)
library(ggplot2)
rating_comparison %>% 
  filter(type == "Overall.A") %>%
  group_by(president) %>% 
  mutate(Day = as.numeric(endDate - min(endDate))) %>% 
  ungroup() %>% 
  filter(Day <= 365) %>% 
  ggplot(aes(Day, rating)) + 
    geom_line(aes(color = president))

我从网上抓取了一些盖洛普数据,与您的数据相似但不完全相同,以获得以下结果:

enter image description here

关于r - 使用 ggplot2 在同一图中绘制不同年份的两条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47802809/

相关文章:

r - 在Shiny应用程序中删除DT数据表的行

c# - 使用 InteractiveDataDisplay.WPF 导出图形

r - 使用 ggplot2 仅将一个轴转换为 log10 刻度

R ggtree : How to label single tree tip with ggtree similar to labeling nodes with geom_cladelabel

r - geom_smooth lm 线未绘制 - ggplot2

javascript - 将折线图/面积图线延伸到图表边缘

java - 如何使用 java 休息来使用 Angular 渲染 nv3d 烛台图?

r - 在我的 R 包中包含数据库连接

R tryCatch 跳过错误

R函数用于按月扩展表,给定开始月份和结束月份