如何去除ggplot中hms时间类型Y轴标签的毫秒后缀?
解决ggplot中hms时间Y轴显示毫秒后缀的问题
首先修正你代码中的语法错误:group和colour参数需要放在aes()函数内部,原代码的括号位置有误,修正后基础代码如下:
ggplot(df, aes(x = category, y = plot_real_time, group = run, colour = run)) + geom_line(linewidth = 2)
要去除Y轴标签末尾的.0000000毫秒后缀,只需通过scale_y_time()指定仅显示时:分:秒的时间格式即可,以下是两种实用方法:
方法1:借助hms包的format_hms函数
library(ggplot2) library(hms) ggplot(df, aes(x = category, y = plot_real_time, group = run, colour = run)) + geom_line(linewidth = 2) + scale_y_time(labels = function(x) format_hms(x, format = "%H:%M:%S"))
方法2:借助scales包的time_format函数
library(ggplot2) library(scales) ggplot(df, aes(x = category, y = plot_real_time, group = run, colour = run)) + geom_line(linewidth = 2) + scale_y_time(labels = time_format("%H:%M:%S"))
原理说明
hms对象本质是存储为秒数的数值型变量,ggplot默认会按照完整的hms格式渲染标签,即使毫秒部分为0也会显示.0000000。通过指定%H:%M:%S格式,强制只显示时、分、秒部分,就能隐藏多余的毫秒后缀。
内容的提问来源于stack exchange,提问作者E. Rei
相关产品推荐
相关产品推荐

