gpt4 book ai didi

r - 在 stat_contour 中设置特定于方面的中断

转载 作者:行者123 更新时间:2023-12-04 09:49:01 24 4
gpt4 key购买 nike

我想使用 ggplot 显示等高线图和 stat_contour对于我的两类数据 facet_grid .我想根据数据突出显示特定级别。这是一个类似的虚拟示例,使用通常的 volcano数据。

library(dplyr)
library(ggplot2)
v.plot <- volcano %>% reshape2::melt(.) %>%
mutate(dummy = Var1 > median(Var1)) %>%
ggplot(aes(Var1, Var2, z = value)) +
stat_contour(breaks = seq(90, 200, 12)) +
facet_grid(~dummy)

图 1:
enter image description here

假设在每个因子水平内(我猜这里是东半部和西半部),我想找到火山的平均高度并显示出来。我可以手动计算:
volcano %>% reshape2::melt(.) %>% 
mutate(dummy = Var1 > median(Var1)) %>%
group_by(dummy) %>%
summarise(h.bar = mean(value))

# A tibble: 2 × 2
dummy h.bar
<lgl> <dbl>
1 FALSE 140.7582
2 TRUE 119.3717

这告诉我每一半的平均高度是 141 和 119。我可以在两个方面都绘制这些高度,但不仅仅是在每一侧适当的一个。
v.plot + stat_contour(breaks = c(141, 119), colour = "red", size = 2)

情节 2:
enter image description here

而且你不能放 breaks=aes() 内语句,因此将其作为原始数据帧中的列传递出去。我意识到通过这个虚拟示例,我可能会做一些类似 bins=2 的事情。但在我的实际数据中,我不想要数据的平均值,我想要其他的东西。

谢谢!

最佳答案

我再次尝试解决这个问题并提出了部分解决方案,但我不得不使用不同的 geom .

volcano %>% reshape2::melt(.) %>% 
mutate(dummy = Var1 > median(Var1)) %>%
group_by(dummy) %>%
mutate(h.bar = mean(value), # edit1
is.close = round(h.bar) == value) %>% #
ggplot(aes(Var1, Var2, z = value)) +
stat_contour(breaks = seq(90, 200, 12)) +
geom_point(colour = "red", size = 3, # edit 2
aes(alpha = is.close)) + #
scale_alpha_discrete(range = c(0,1)) + #
facet_grid(~dummy)

edit 1我加了一个 mutate()到上面的块以生成一个变量标识哪里 value “足够接近”(四舍五入到最接近的整数)到所需的高亮点(本例中数据的平均值)。

edit2我加了 geom_point s 显示具有所需值的网格位置,并使用 alpha 隐藏不需要的位置。 0 或完全透明。

图 3: Point highlights

这个解决方案的问题在于它非常有差距,并试图通过 geom_path 来弥补这些问题。是一团乱麻。我也尝试了更粗的舍入,但它只会让事情变得困惑。

很想听听其他想法!谢谢

关于r - 在 stat_contour 中设置特定于方面的中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42103071/

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