gpt4 book ai didi

r - 分面的不同 geom_rect() 对象

转载 作者:行者123 更新时间:2023-12-04 11:51:48 27 4
gpt4 key购买 nike

我有一个数据框,我用它来创建一个分面为三个独立图的 ggplot 对象。

max_24h_lactate_cpet.long

First_24h_Lactate_Max, Lactate_Above_Threshold, Metric, Value
2.3, High, AT_VO2_mL.kg.min, 17.00
2.3, High, VO2_Peak, 84.07
2.3, High, AT_VE_VCO2, 35.00

以 dput 格式:
dput(max_24h_lactate_cpet.long)
structure(list(First_24h_Lactate_Max = c(2.3, 2.3, 2.3), Lactate_Above_Threshold = structure(c(1L,
1L, 1L),
.Label = c("High", "Normal"), class = "factor"), Metric = structure(1:3, .Label = c("AT_VO2_mL.kg.min",
"VO2_Peak", "AT_VE_VCO2"), class = "factor"), Value = c(17, 84.07,
35)), .Names = c("First_24h_Lactate_Max", "Lactate_Above_Threshold",
"Metric", "Value"), row.names = c(44L, 192L, 340L), class = "data.frame")

我想将 geom_rect() 对象放在这些方面中的每一个上,但每个图具有不同的 ymin 和 ymax 值。

这是我当前的代码:
max_24h_lac_vs_cpet <- ggplot(max_24h_lactate_cpet.long, 
aes(x = max_24h_lactate_cpet.long$First_24h_Lactate_Max,
y = max_24h_lactate_cpet.long$Value))

max_24h_lac_vs_cpet + geom_point() +
facet_wrap( ~ Metric, scales="free_y") +
scale_color_brewer(palette="Set1") +
labs(x = "Max Lactate Value < 24h after surgery (mmol)",
y = "Test Metric Value") +
stat_smooth(method="lm") +
annotate("rect", xmin=-Inf, xmax=1.6, ymin=-Inf, ymax=Inf,alpha=0.1,fill="blue")

这给出了以下情节:

Part completed graph

我在一个单独的数据框中得到了我的阈值(geom_rect() 对象的 x 和 y 限制),如下所示:
    Metric              xmin    xmax    ymin    ymax
AT_VO2_mL.kg.min -Inf Inf -Inf 10.2
VO2_Peak -Inf Inf -Inf 75.0
AT_VE_VCO2 -Inf Inf 42 Inf

输入代码:
dput(thresholds)
structure(list(Metric = structure(c(2L, 3L, 1L), .Label = c("AT_VE_VCO2",
"AT_VO2_mL.kg.min", "VO2_Peak"), class = "factor"), xmin = c(-Inf,
-Inf, -Inf), xmax = c(Inf, Inf, Inf), ymin = c(-Inf, -Inf, 42
), ymax = c(10.2, 75, Inf)), .Names = c("Metric", "xmin", "xmax",
"ymin", "ymax"), class = "data.frame", row.names = c(NA, -3L))

并已将此代码片段添加到我的 ggplot 调用中
 + geom_rect(data=thresholds$Metric, aes(xmin=xmin, xmax=xmax, 
ymin=ymin, ymax=ymax,
alpha=0.1,fill="red"))

这给出了如下错误:

Error: ggplot2 doesn't know how to deal with data of class factor



使用以下内容也会出错:
 + geom_rect(data=thresholds, aes(xmin=xmin, xmax=xmax, 
ymin=ymin, ymax=ymax,
alpha=0.1,fill="red"))

Error: Aesthetics must either be length one, or the same length as the dataProblems:xmin, xmax, ymin, ymax



我看过 other 上的例子 questions ,但我正在努力将他们的答案翻译成我自己的问题。任何帮助,将不胜感激!

最佳答案

所以你没有向我们提供 labels ,并且只有第一个数据集的三行,所以下面的内容是不完整的,但应该演示如何让 rect 工作:

max_24h_lac_vs_cpet <- ggplot(max_24h_lactate_cpet.long, 
aes(x = First_24h_Lactate_Max,
y = Value))

max_24h_lac_vs_cpet + geom_point() +
facet_wrap( ~ Metric, scales="free_y") +
scale_color_brewer(palette="Set1") +
labs(x = "Max Lactate Value < 24h after surgery (mmol)",
y = "Test Metric Value") +
stat_smooth(method="lm") +
geom_rect(data=thresholds, aes(x = NULL,y = NULL,xmin=xmin, xmax=xmax,
ymin=ymin, ymax=ymax,
alpha=0.1,fill="red"))

您正在使用 $在第一 aes()称呼。永远不要那样做。然后你需要取消映射 xygeom_rect层,因为它们是从顶层继承的 ggplot称呼。另一种选择是使用 inherit.aes = FALSE .

关于r - 分面的不同 geom_rect() 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25286629/

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