[英]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.