[英]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.