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")

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...