gpt4 book ai didi

r - 在 ggplot2 中使用多个 scale_fill_manual

转载 作者:行者123 更新时间:2023-12-04 17:59:02 36 4
gpt4 key购买 nike

假设我有一个这样的数据框:

Date <- seq(as.Date("1990-03-01"), by = 'quarters', length.out=100)
Date<- as.yearqtr(Date, format="%Y-%m-%d")
A <- runif(100, 500, 2000)
B <- runif(100, 200, 1000)
C <- runif(100, 1000, 5000)
df <- data.frame(Date, A, B, C)

我想使用 ggplot2 创建一个热图,但根据每个变量的百分位数对每个变量 A 和 B 应用不同的条件离散色标。即对于低于 25% 的值 > 红色,对于 25% 到 50% 之间的值 > 橙色,对于 50% 到 75% 之间的值 > 黄色,对于 75% 到 100% 之间的值 > 绿色。

我可以通过使用melt 函数并使x=Date 和y=variable 以及fill=value 在ggplot geom_tiles 上创建热图。但是,他们会将所有变量的值作为一个向量,并根据所有组合值给出第 25 个百分位数。有没有办法根据单个变量 A、B、C 的百分位数分别调节 scale_fill_manual。在这种情况下,我可能需要应用多个 scale_fill_manual 函数。

或者,有什么方法可以将 ggplot 堆叠在一起,因为我已经能够为每个变量创建单独的热图。我已经为此苦苦挣扎了一段时间,感谢任何帮助,非常感谢。

最佳答案

这应该有助于颜色编码:

Date <- seq(as.Date("1990-03-01"), by = 'quarters', length.out=100)
Date<- as.yearqtr(Date, format="%Y-%m-%d")
A <- runif(100, 500, 2000)
B <- runif(100, 200, 1000)
C <- runif(100, 1000, 5000)
df <- data.frame(Date, A, B, C)

df

quantA <- quantile(df$A, c(0.25, 0.75))
quantB <- quantile(df$B, c(0.25, 0.75))
quantC <- quantile(df$C, c(0.25, 0.75))

df$quantA <- with(df, factor(ifelse(A < quantA[1], 0,
ifelse(A < quantA[2], 1, 2))))
df$quantB <- with(df, factor(ifelse(B < quantB[1], 0,
ifelse(B < quantB[2], 1, 2))))
df$quantC <- with(df, factor(ifelse(C < quantC[1], 0,
ifelse(C < quantC[2], 1, 2))))

有关基于百分位数的颜色编码的更多详细信息,请参阅此帖子:

Color code points based on percentile in ggplot

这是基于多个变量的颜色编码:

R ggplot barplot; Fill based on two separate variables

关于r - 在 ggplot2 中使用多个 scale_fill_manual,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37780817/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com