如何解决R |时间序列图内的标签
我想将标签(平均温度和风速)绘制到时间序列图中。 我的尝试在x轴上与“非时间格式”一起正常工作。但是,只要我想用这种方式绘制它,就会收到错误消息:
无效的输入:time_trans仅适用于POSIXct类的对象
示例:
import * as EasyMDE from 'easymde';
window.EasyMDE = EasyMDE;
我很确定
posx = 1,posy = 4,
是造成问题的原因,但我不知道如何更换它们。
解决方法
该解决方案比看起来简单得多。如果x轴处于日期时间刻度,并且posx
将成为该刻度的第一位置,请设置
posx = as.POSIXct("2012-01-01")
在mutate
指令中。该值是先前创建的df$Time
中的第一个值。下面使用的替代方法是posx = df$Time[1]
。
我还更改了vjust
设置。现在完整的代码是
library(tidyverse)
library(glue)
library(ggtext)
set.seed(1700)
df <- data.frame(Time = seq(as.POSIXct("2012-01-01"),as.POSIXct("2012-01-02"),by=(30*60)),Temp = runif(49,min=10,max=15),Windsp = runif(49,min=1,max=5),Prec = runif(49,min=0,max=3))
df_label <- df %>%
summarize(Tmean = mean(Temp),Ws_mean = mean(Windsp)) %>%
mutate(
posx = df$Time[1],posy = 3,label = glue("Tmean = {round(Tmean,3)} °C <br> Ws_mean = {round(Ws_mean,3)} m/s"))
ggplot(df,aes(x = Time,y = Prec)) +
geom_line(size = 1.5) +
scale_x_datetime(breaks = "2 hour",minor_breaks = "1 hour",date_labels = "%H:%M") +
scale_y_continuous(breaks=seq(0,3.5,0.5)) +
geom_richtext(
data = df_label,aes(posx,posy,label = label),hjust = 0,vjust = 0.5,size = 3,# remove label background and outline
fill = "white",label.color = "black")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。