【问题标题】:R - How to make a plot with two variables on the horizontal axis? [closed]R - 如何在水平轴上绘制两个变量的图? [关闭]
【发布时间】:2018-02-01 12:49:43
【问题描述】:

我是 R 新手。

这是我的日期范围:

 I  UserID | hour | min | velocity
   #1    1        0     0      12
   #2    1        0     30     20
   #3    1        1     0      19
   #4    1        1     30     11
   #5    1        2     0      12
   #6    1        2     30     7
   ..   ...     ...    ...   ....
   #10   2        0     0      142
   #11   2        0     30     201
   #12   2        1     0      129
   #13   2        1     30     111
   ..   ...     ...    ...   ....

我将 Userid 列作为一个因素。

我的问题是如何以小时和分钟列为横轴,以速度为纵轴来制作线性图?

【问题讨论】:

  • 我最好的建议是制作一个“时间”列,您可以只用时间制作数字、时间或 POSIXct。见灵感here,你也可能想查看this ggplot2 备忘单以了解如何绘图。请记住,SO 在这里帮助您解决问题,而不是为您编写所有内容。
  • 我会将hourmin 变量组合成一个时间变量(例如,自特定时间以来的秒数)并简单地绘制一个轴。
  • 请您自己解决问题,我们不是您的个人编码服务

标签: r ggplot2 axis-labels


【解决方案1】:

如果您只希望时间出现在 x 轴上,您可以在这种情况下创建一个虚拟日期“2018-01-01”并将其从图中排除

library(lubridate)
library(scales)
df$Time=ymd_hm(paste0("2018-01-01"," ",as.character(df$hour),":",as.character(df$min)))
ggplot(df,aes(x=Time,y=velocity))+geom_line()+scale_x_datetime(labels = date_format("%H:%M", tz = "UTC"))

【讨论】:

    【解决方案2】:

    如果您不想合并时间 - 可能是为了显示每隔半小时发生的事情 - 或出于任何其他原因,以下是有用的:

    数据

    set.seed(42)
    dat <- data.frame(userID = c(rep(1,10), rep(2,10)),
                      hour = 1:20,
                      min = c(0,30),
                      velocity = runif(20, 12,111))
    

    情节

    ggplot(dat, aes(x = hour, y = velocity)) + 
      geom_point(aes(shape = factor(min), color = factor(userID)))
    

    输出

    如果要添加行,请将geom_point() 更改为geom_line() 并使用linetype 属性而不是shape,并将其值设置为factor(min)

    如果您不介意将hourmin 组合到x 轴,可以使用以下代码:

    # add another column
    dat$tme <- as.POSIXct(paste("2018-02-01", dat$hour, dat$min), 
                          format = "%Y-%m-%d %H %M", tz = "UTC")
    

    情节

    ggplot(dat, aes(x = tme, y = velocity)) + geom_line(aes(linetype = factor(userID)))
    

    输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多