簡體   English   中英

在x軸上創建帶有時間(POSIXct)的填充輪廓圖

[英]Create a filled.contour plot with time (POSIXct) on x axis

我想用x軸上的時間,y軸上的深度和溫度作為z值繪制圖。 我將時間轉換為posixct格式:

DateTime<-as.character.Date(Rohdaten$Datum..UTC.)
CompleteDate <- as.POSIXct(DateTime, format = "%d.%m.%Y %H:%M", tz = "UTC")

這些是深度:

Tiefen <- c(1, 3, 5, 10, 15, 20.5)

我的溫度值在一個矩陣中:

Temp <- as.matrix(data.frame(Daten$D1.1m, Daten$D1.3m, Daten$D1.5m, Daten$D1.10m, Daten$D1.15m, Daten$D1.20.5m))
Temp2 <- matrix(Temp, ncol=ncol(Temp), dimnames = NULL)

我使用以下代碼進行繪制:

filled.contour(CompleteDate,Tiefen,Temp2)

但是我收到一條錯誤消息:

Error in filled.contour(CompleteDate, Tiefen, Temp2) : 
ansteigende 'x' und 'y' Werte erwartet

該錯誤表明,fill.contour期望x和y值遞增。 當我拿

Time <- c(1:3405)

代替以posixct格式的時間創建圖:

劇情1

我該怎么做才能將實際的日期和時間作為x軸?

這是我的POSIXct格式的CompleteDate: https ://www.dropbox.com/s/f0h643u7lpzq9mu/CompleteDate.txt ? dl =0

這是一個僅使用日期和虛擬溫度快照的工作示例:

DateTime <- structure(c(1472209200, 1472212800, 1472216400, 1472220000, 1472223600, 
                        1472227200, 1472230800, 1472234400, 1472238000, 1472241600, 1472245200, 
                        1472248800, 1472252400, 1472256000, 1472259600, 1472263200, 1472266800, 
                        1472270400, 1472274000, 1472277600, 1472281200, 1472284800, 1472288400, 
                        1472292000, 1472295600, 1472299200, 1472302800, 1472306400, 1472310000, 
                        1472313600, 1472317200, 1472320800, 1472324400, 1472328000, 1472331600
), class = c("POSIXct", "POSIXt"), tzone = "UTC")

Tiefen <- c(1, 3, 5, 10, 15, 20.5)

# now create fictive temperatures
df   <- expand.grid("Date" = DateTime, "Tiefen" = Tiefen)
df   <- df %>% group_by(Tiefen) %>% mutate(Temp = runif(n(), 15 - Tiefen/2, 27 - Tiefen)) %>% ungroup()
Temp <- matrix(df$Temp, nrow = length(DateTime))


inMeter <- function(x) {
  paste0(x, "m")
}

inCelsius <- function(x) {
  paste0(x, "°C")
}

filled.contour(x = as.numeric(DateTime), y = Tiefen, z = Temp,  
               plot.axes = { 
                 axis(1, labels = DateTime, at = as.numeric(DateTime), las = 2, cex.axis = 0.5) 
                 axis(2, at = Tiefen, labels = inMeter(Tiefen), cex.axis = 1) 
               },
               key.axes = {
                 axis(4, at = pretty(Temp), labels = inCelsius(pretty(Temp))) 
               })

筆記:

  • 我們提供unix時間戳(通過使用as.numeric() )作為繪圖的x值。
  • 我們使用原始POSIXct字符串繪制新軸。 我把它們縮小了。 由於日期很多,因此請確保圖不超載。
  • z值( Temp )作為矩陣提供,該矩陣具有與x值一樣多的行。
  • 我添加了兩個函數,以使兩個圖分別對應於圖和鍵的y軸。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM