簡體   English   中英

ggplot 多行(隨着時間的推移發展)

[英]ggplot with several lines (development over time)

我想創建一個多行的ggplot。 但是輸出看起來不像我想要的。 看起來這些點是垂直標記的。 但是,我想鏈接我看到時間發展的每個時期的值(更像是水平的)。

我有一個帶有日期的數據集(主要是每月但並非總是如此),一列我想顯示為名為“顏色”的不同行(5 行 0-4),以及值。 它看起來像這樣:

 head(df)
        date color     value
1 2007-01-01     0 0.5071167
2 2007-02-01     0 0.5071167
3 2007-03-01     0 0.5071167
4 2007-04-01     0 0.5071167
5 2007-05-01     0 0.7292619
6 2007-06-01     0 0.5071167

我試圖制作一個ggplot:

ggplot(df, aes(x= date, y = value, color = color)) + geom_line()

創建了以下圖

但是我更喜歡一個圖,它顯示每種顏色的一條清晰的線(制作 5 條線),這樣就可以看到它是如何隨着時間的推移而發展的。 更像這樣,但有 5 行:情節應該如何

我很高興有人能幫忙:)

您的繪圖以這種方式顯示,因為列color是數字,因此 ggplot 將其視為連續變量。 這意味着 ggplot 認為您希望所有觀察結果都在同一組中。 當它看到 5 個具有相同date不同變量時,它會繪制一條垂直線連接它們,這顯然不是您想要的。 您需要讓 ggplot 知道您打算將color作為分類變量而不是連續變量。

如果您將color轉換為一個因子,該圖將根據顏色將觀測值分成五組,並按照您想要的方式繪制它們。 您可以在數據框中轉換數字,也可以直接在美學中進行:

ggplot(df, aes(x= date, y = value, color = as.factor(color))) + 
  geom_line() + 
  labs(colour = "color")

你得到這個: 在此處輸入圖片說明


使用的數據

set.seed(69)
df <- data.frame(date = rep(as.POSIXct("2007-01-01") + lubridate::days(1:3650), 5),
                 color = rep(0:4, each = 3650),
                 value = c(cumsum(rnorm(3650)), cumsum(rnorm(3650)),  cumsum(rnorm(3650)),
                           cumsum(rnorm(3650)), cumsum(rnorm(3650))))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM