我想在不同位置創建一個隨時間變化的 'x' 濃度的插值圖。如果可能,我想以一種方式水平插入點(即隨著時間的推移),以便為每個樣本獲得平滑的變色水平線。
df<-data.frame(Concentration = rnorm(30), Position = rep(c(0, 1), 15), Sample = rep(c("A", "B"), 15), Date = seq.Date(as.Date("2020-01-01"), as.Date("2020-01-30"), "days"))
df %>%
ggplot(aes(x = Date, y = Position))
geom_hline(yintercept = c(0,1),
size = 0.3)
geom_tile(aes(fill = Concentration),
interpolate = T)
xlab("Day")
ylab("Sample")
我將不勝感激任何建議。李
uj5u.com熱心網友回復:
不確定我是否完全理解這個問題,但這是我認為您所問的一種可能的解決方案。
library(tidyverse)
library(gt)
df <-
data.frame(Concentration = rnorm(30),
Sample = rep(c("A", "B"), 15),
Date = seq.Date(as.Date("2020-01-01"),
as.Date("2020-01-30"), "days"))
interpolated_df <-
df %>%
arrange(Sample) %>%
complete(Sample, Date) %>%
## interpolated is average of value right before and right after
mutate(Interpolations = (lead(Concentration)
lag(Concentration))/2 ) %>%
mutate(Final = coalesce(Concentration, Interpolations))
## plot
interpolated_df %>%
ggplot(aes(x = Date, y = Sample))
geom_tile(aes(fill = Final))
xlab("Day")
ylab("Sample")

由reprex 包(v2.0.1)于 2021 年 10 月 25 日創建
uj5u.com熱心網友回復:
這正是ggforce::geom_link為此而生的。
library(tidyverse)
library(ggforce)
set.seed(42)
df <- data.frame(Concentration = rnorm(30), Position = rep(c(0, 1), 15), Sample = rep(c("A", "B"), 15), Date = seq.Date(as.Date("2020-01-01"), as.Date("2020-01-30"), "days"))
df %>%
ggplot(aes(x = Date, y = Position))
geom_link2(aes(group = Position, color = Concentration), size = 10)
labs(x = "Day", y = "Sample")

由reprex 包(v2.0.1)于 2021 年 10 月 25 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/341822.html
