【问题标题】:Plotting multiple time series on one GGPlot problems (each group consists of only one observation)在一个 GGPlot 问题上绘制多个时间序列(每组仅包含一个观察值)
【发布时间】:2021-08-31 19:32:22
【问题描述】:

我真的不知道为什么我不能让它工作,我尝试了很多我在网上找到的不同的东西都无济于事。这是我开始的数据:

structure(list(Date = structure(c(16923, 16924, 16925, 16930, 
16931, 16932), class = "Date"), 
bfolioTotalInvNZ = c("100", "100.396798622275", 
"100.289579106988", "99.9190144893418", "100.439784570027", "100.124973416093"
), 
hpfolioTotalInvNZ = c("100", "99.8882748824908", "98.8225791351364", 
"98.0760852984932", "99.6998217808326", "99.8428365508291"), 
lpfolioTotalInvNZ = c("100", "100.680353722841", "99.7285569078393", 
    "99.2649714247455", "100.21300064583", "100.043862125597"), 
hROATotalInvNZ = c("100", "100.38312056174", "100.860708831452", 
    "99.4017877917418", "100.396352403539", "101.764817682509"), 
lROATotalInvNZ = c("100", "100.611388876841", "99.7567183567618", 
    "99.9634937211577", "101.234588176424", "102.218770263564"
    )), row.names = c("20160502", "20160503", "20160504", "20160509", 
"20160510", "20160511"), class = "data.frame")

基本上它是 4 年期间多个投资组合回报的列表。第一列是一个日期列,其格式是这样的,行名也是日期,即使它是多余的。

然后我使用 melt 命令并得到以下输出:

melted<- melt(plottable, id = "Date")
        Date         variable            value
1 2016-05-02 bfolioTotalInvNZ              100
2 2016-05-03 bfolioTotalInvNZ 100.396798622275
3 2016-05-04 bfolioTotalInvNZ 100.289579106988
4 2016-05-09 bfolioTotalInvNZ 99.9190144893418
5 2016-05-10 bfolioTotalInvNZ 100.439784570027
6 2016-05-11 bfolioTotalInvNZ 100.124973416093

然后用下面的代码来绘制它们:

ggplot(melted,                            
       aes(x = Date,
           y = value,
           col = variable)) +
  geom_line()

它给了我以下错误: geom_path:每组仅包含一个观察值。是否需要调整组 审美?

我一直在努力解决这个问题,但似乎无法解决这个问题。如果有人可以帮助我,我将不胜感激。我只是想同时在同一个情节中绘制所有这些,我真的不确定是什么一直出错。

编辑:如果我添加 group = variables 命令,例如:

ggplot(melted, aes(Date, value)) + 
  geom_line(aes(colour = variable, group = variable))

我得到以下输出: enter image description here

我不知道为什么,因为值在 50-250 之间,我什至将观察次数减少到每个 600。

【问题讨论】:

  • 根本不仔细查看,(1) 某些因素可能是不应该的因素,(2) 您可以指定 group 美学来手动覆盖正在发生的任何事情

标签: r ggplot2 statistics


【解决方案1】:

因为您当前的value 是一个角色。将其转换为数字将解决问题。

library(data.table)
library(tidyverse) 
melted<- melt(plottable, id = "Date") %>% 
  mutate(value = as.numeric(value))

ggplot(melted,                            
       aes(x = Date,
           y = value,
           col = variable)) +
  geom_line()

【讨论】:

    猜你喜欢
    • 2021-11-20
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    相关资源
    最近更新 更多