2017-09-22 13 views
0

年ごとの収入を比較するためにプロットを作成しようとしていますが、それを動作させることができず、理由を理解できません。これが機能しない理由私は本当に理解していない年の収入を比較する

df <- data.frame(date = seq(as.Date("2016-01-01"), as.Date("2017-10-01"), by = "month"), 
       rev = rnorm(22, 150, sd = 20)) 

    df %>% 
     separate(date, c("Year", "Month", "Date")) %>% 
     filter(Month <= max(Month[Year == "2017"])) %>% 
     group_by(Year, Month) %>% 
     ggplot(aes(x = Month, y = rev, fill = Year)) + 
     geom_line() 
geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic? 

は私のDFを考えてみましょう。私が望むのは、1月から10月までの2つの行です。

答えて

1

これはあなたのために働く必要があります。

library(tidyverse) 
df <- data.frame(date = seq(as.Date("2016-01-01"), as.Date("2017-10-01"), by = "month"), 
       rev = rnorm(22, 150, sd = 20)) 

df %>% 
    separate(date, c("Year", "Month", "Date")) %>% 
    filter(Month <= max(Month[Year == "2017"])) %>% 
    ggplot(aes(x = Month, y = rev, color = Year, group = Year)) + 
    geom_line() 

それはあなたが日付にlubridateを使用する場合、それは便利かもしれません、原因変数の型に間違ってちょうどグループだった(またtidyverseパッケージ)

library(lubridate) 
df %>% 
    mutate(Year = as.factor(year(date)), Month = month(date)) %>% 
    filter(Month <= max(Month[Year == "2017"])) %>% 
    ggplot(aes(x = Month, y = rev, color = Year)) + 
    geom_line() 
0

私はggplot2の文字がこの場合の文字であるMonthの形式を認識しないため、混乱していると思います。数値に変換してみてください。私はこのチャートのために、より理にかなっていると信じて、私はcolourと言葉fillを交換

... + 
ggplot(aes(x = as.numeric(Month), y = rev, colour = Year)) + 
.... 

注:ところで

sample output

を、私はわかりませんgroup_byステートメントは何も追加していません。私はそれを持っていても同じチャートを持っています。

関連する問題