簡體   English   中英

"R中同一時間序列x軸的垂直堆棧圖"

[英]Vertical stack plots at same time series x axis in R

我已經瀏覽了以下鏈接Stacking multiple plots並且我正在使用以下 r 命令。 我得到了 4 個堆棧 y 軸和時間序列 x 軸的圖表。

library(tidyverse)
library(reshape2)
dt$time <- seq(nrow(dt))
dt.df <- melt(dt, measure.vars = c("Time", "A", "B", "B_1", "C"))
ggplot(dt.df, aes(x = Time, y = value)) +
facet_grid(variable ~ ., scales = "free_y") +
theme(legend.position = "none") 

下面是示例數據框

Time        A       B       B_1     C
10:12:54    2376.2  1.462   3.462   48
10:12:55    2410    1.462   3.462   48
10:12:56    2400    1.462   3.462   48
10:12:57    2409    1.462   3.462   48.6
10:12:58    2400    1.462   3.462   48.6
10:12:59    2385.1  1.462   3.462   46.6
10:13:00    2400    1.462   3.462   46.6
10:13:01    2410    1.462   3.462   46.6
10:13:02    2400    1.462   3.462   46.6
10:13:03    2106    1.463   3.463   46.6
10:13:04    2406    1.463   3.463   44.8
10:13:05    2376.2  1.463   3.463   44.8
10:13:06    2406    1.463   3.463   44.8
10:13:07    2400    1.463   3.463   44.8

我想繪制垂直堆疊的 A 值、 B 和 B_1 值合並在一起以及 C 值。 但問題是我無法在同一個堆棧中合並 B 和 B1 曲線。 是否可以僅使用 2 列值將一個堆疊並將其他作為單列值? 我該如何解決這個問題?

我認為關鍵是要在數據中添加另一列以指定構面。 該列與變量列基本相同,不同之處在於“ B”和“ B_1”具有相同的值,並將它們放在同一構面上。

這是一個使用gather代替melt例子。

library(tidyverse)
dt = read_table("Time        A       B       B_1     C
10:12:54    2376.2  1.462   3.462   48
10:12:55    2410    1.462   3.462   48
10:12:56    2400    1.462   3.462   48
10:12:57    2409    1.462   3.462   48.6
10:12:58    2400    1.462   3.462   48.6
10:12:59    2385.1  1.462   3.462   46.6
10:13:00    2400    1.462   3.462   46.6
10:13:01    2410    1.462   3.462   46.6
10:13:02    2400    1.462   3.462   46.6
10:13:03    2106    1.463   3.463   46.6
10:13:04    2406    1.463   3.463   44.8
10:13:05    2376.2  1.463   3.463   44.8
10:13:06    2406    1.463   3.463   44.8
10:13:07    2400    1.463   3.463   44.8")

dt.df = gather(dt, "variable", "value", -Time) %>%
  mutate(facets = variable,
         facets = if_else(variable == "B_1", "B", facets))

dt.df %>%
  ggplot(aes(x = Time, y = value, color = variable)) +
  geom_line() +
  facet_grid(facets ~ ., scales = "free_y")

在此處輸入圖片說明

在此示例數據中,您看不到“ B”或“ B_1”中的變化,因為當它們處於相同比例時,各自的變化太小。 但這說明了解決問題的一種方法。 我再次添加了圖例,以便能夠區分“ B”和“ B_1”。

生成演示數據:

Generate example data:

dt = read_table("Time        A       B       C       D
10:12:54    2376.2  1.462   3.462   48
10:12:55    2410    1.462   3.462   48
10:12:56    2400    1.462   3.462   48
10:12:57    2409    1.462   3.462   48.6
10:12:58    2400    1.462   3.462   48.6
10:12:59    2385.1  1.462   3.462   46.6
10:13:00    2400    1.462   3.462   46.6
10:13:01    2410    1.462   3.462   46.6
10:13:02    2400    1.462   3.462   46.6
10:13:03    2106    1.463   3.463   46.6
10:13:04    2406    1.463   3.463   44.8
10:13:05    2376.2  1.463   3.463   44.8
10:13:06    2406    1.463   3.463   44.8
10:13:07    2400    1.463   3.463   44.8")
dt$Time=as.POSIXct(dt$Time)

暫無
暫無

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

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