如何解决ggplotly和lubridate:胡佛显示秒,而不是分钟
我用ggplot创建了一个带有以下data.frame的箱形图:
library(lubridate)
library(ggplot2)
library(ggplotly)
df <- data.frame(
time = c("00:43:20","00:44:30","00:45:40"),sex = c("m","m","m")
)
df$sex <- factor(df$sex)
df$time <- lubridate::hms(df$time)
现在我用ggplot创建了箱线图
g <- ggplot(df) +
geom_boxplot(aes(sex,time)) +
scale_y_time()
一切都很好,现在可以与ggploty()
进行交互了:
plotly::ggplotly(g)
但是当我将鼠标悬停在箱线图上时,我只看到几秒钟,而不是lubridate格式。 如何设法查看y轴上显示的数据?
解决方法
据我了解,这个问题相当复杂。主要问题似乎是润滑液将时间存储为周期。因此,您在ggplot中获得的秒数也与ggplot中的秒数相同,它们仅在比例尺上通过“ scale_y_time”转换。
根据我的理解,工作范围是将时间值转换为分钟数。尽管这意味着分钟数将在逗号/点后有100秒:
第一个带有ggplot的选项:
library(plotly)
library(ggplot)
library(lubridate)
# calculate time as minutes passed and get it as numeriic
mins <- as.numeric(lubridate::hms(df$time) - hms("00:00:00"))/60
df$sex <- factor(df$sex)
df$time <- mins
g <- ggplot2::ggplot(df) +
ggplot2::geom_boxplot(aes(sex,time))
plotly::ggplotly(g)
第二个选项,直接使用plotly(仅用于文本数据,不确定是否可以将性别F添加为x或是否需要第二条迹线并且还需要进行一些修饰... ggplot给出的结果实际上相同)
plotly::plot_ly(y = ~mins,type = "box")
可能有更好的解决方案-我只是在最近2个小时内无法解决;(
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。