如何在R的ggplotly图表中显示实际日期而非数值转换后的日期?
解决ggplotly悬停显示实际日期格式的问题
嘿,我来帮你搞定这个小问题!你遇到的情况是ggplotly默认把Date类型转换成了数值,导致悬停时看不到直观的日期格式。咱们可以通过自定义悬停文本的方式轻松解决:
关键思路
在ggplot的aes映射里添加text参数,手动定义悬停时要显示的内容(包括格式化后的日期和数值),然后让ggplotly调用这个自定义文本就行。
完整修改后的代码
require(plotly) require(ggplot2) # 原始数据 x <- c("01/01/2007","04/03/2008","28/11/2008","13/06/2009") y <- c(25, 50, 75, 100) x_lab <- "date" y_lab <- "score" # 数据处理:注意将y转为数值型(原代码cbind会把y变成字符型) mydata <- as.data.frame(cbind(x,y)) mydata$x <- as.Date(mydata$x, "%d/%m/%Y") mydata$y <- as.numeric(mydata$y) # 绘制ggplot,同时自定义悬停文本 ggplot(mydata, aes(x = x, y = y, text = paste("日期: ", format(x, "%d/%m/%Y"), "\n分数: ", y))) + geom_point() + labs(x = x_lab, y = y_lab) # 调用ggplotly并指定使用自定义的悬停文本 ggplotly(tooltip = "text")
效果说明
这样修改后,当你把鼠标悬停在数据点上时,就会看到清晰的日期格式(比如01/01/2007)和对应的分数,再也不会出现奇怪的数值啦!另外把y转为数值型是个小细节,避免原代码里字符型y可能带来的绘图问题。
内容的提问来源于stack exchange,提问作者Sergio Nolazco
相关产品推荐
相关产品推荐

