R绘制散点图

时间:2020-01-30 02:47:50

标签: r plotly scatter-plot r-plotly

我有一个数据集,该数据集包含三列:无时间戳的Date,针对与TimeTS相关的特定事件,将一天中的Date转换为自午夜以来的小时数。第三列是Phase,它是morningafternooneveningnight之一。相位来自TimeTS

以下是示例

Date       TimeTS   Phase  
2020-01-29 2.75     Night 
2020-01-29 4.83     Morning
2020-01-29 7        Morning
2020-01-30 10.6     Afternoon

我需要使用plotly之类的交互式图表来显示以下内容:

  • 在x轴上带有DateTime上带有y的散点图,其中每个时间实例标记在每个日期上
  • Phase的半透明带在图表上水平运行,以方便地解释时间带和Phase标记的分布

以下代码使我接近理想的结果,但不完全相同。

p <- ggplot(clean.data, aes(x=Date,y=TimeTS)) +
  geom_rect(data=clean.data, mapping = aes(
    xmin=min(Date),
    xmax=max(Date),
    ymin=0,
    ymax=24,
    fill=Phase), alpha=0.1) +
  # scale_fill_manual(values=c("Morning" = "red", "Afternoon" = "blue", "Evening" = "green", "Night" = "black")) +
  geom_point()
p <- ggplotly(p)
p

这使我仅获得图表上的Phase个波段之一,而没有其他波段。另外,我认为它是垂直运行而不是水平运行。

任何想法都值得赞赏。

1 个答案:

答案 0 :(得分:0)

由于@ user12728748,我得以完成此任务。代码更改如下:

df.phase <- data.frame(start = c(0,4,10,16,22), end = c(4,10,16,22,24), phase = c("Night", "Morning", "Afternoon", "Evening", "Night"))

p <- ggplot(clean.data, aes(x=Date,y=TimeTS)) +
  geom_rect(data=df.phase, inherit.aes = FALSE, aes(
    xmin= min(clean.data$Date),
    xmax= max(clean.data$Date),
    ymin=start,
    ymax=end,
    fill=phase), alpha=0.5) +
  scale_fill_manual(values=c("Morning" = "orange", "Afternoon" = "blue", "Evening" = "pink", "Night" = "black")) +
  geom_point()
p <- ggplotly(p)
p

代码将生成以下输出 Horizontal Rectangular swimlanes on a scatter plot