R Plotly,复合散点图
R Plotly, composite scatter graph
我有一个包含三列的数据集:Date
没有时间戳,对于与 [=12] 关联的特定事件,当天的 TimeTS
转换为自午夜以来的小时数=].第三列是 Phase
,它是 morning
、afternoon
、evening
或 night
。相位来自 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 轴为
Date
且 y
为 Time
的散点图,每个日期都标记了每个时间实例
- 图表上
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
个波段之一,而不是其他波段。另外我认为它 运行 垂直而不是水平。
欢迎任何想法。
感谢@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
代码将生成以下输出
我有一个包含三列的数据集:Date
没有时间戳,对于与 [=12] 关联的特定事件,当天的 TimeTS
转换为自午夜以来的小时数=].第三列是 Phase
,它是 morning
、afternoon
、evening
或 night
。相位来自 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 轴为
Date
且y
为Time
的散点图,每个日期都标记了每个时间实例 - 图表上
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
个波段之一,而不是其他波段。另外我认为它 运行 垂直而不是水平。
欢迎任何想法。
感谢@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
代码将生成以下输出