gpt4 book ai didi

r - 突出显示跨地 block 具有恒定抖动的一些点(ggplot2)

转载 作者:行者123 更新时间:2023-12-04 03:20:44 27 4
gpt4 key购买 nike

给定这样的数据:

dr <- data.frame(
X = sample(c("yes","no"),10, replace=T),
Y = rnorm(1000),
highlight = sample(c(1,NA),1000,replace=T,prob=c(5,995))
)

我想创建两个图。首先,使用 geom_jitter() 来避免过度绘制的简单方法:

myseed=101
set.seed(myseed)
p <- ggplot(dr, aes(x=X,y=Y,colour=Y,na.rm=T)) +
theme_bw() +
geom_jitter(alpha=0.7,width=0.5,na.rm=T) +
scale_colour_gradient("Y", low="#5edcff", high="#035280") +
stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax= "mean", size=0.3,width=0.33, geom = "crossbar")
plot(p)

Plot 1

然后在第二个图中,我想突出显示 5 个特定数据点。我虽然可以使用 set.seed 以相同的方式使 ggplot 抖动点,然后添加另一个图层,其中只有要突出显示的点。不是这样:红点重新抖动,效果是它们出现在不同的位置。

set.seed(myseed)
pm <- p + geom_jitter(colour="red",data=filter(dr, highlight == 1),width=0.5,size=2)
plot(pm)

Plot 2

我想要的:让绘图 2 与绘图 1 完全一样,唯一的区别是 5 个点(在数据框中标识)以红色突出显示。

我认为问题可能在于我在单独的图中添加了突出显示的点。如果我尝试从一开始就映射“突出显示”因素怎么办?

set.seed(myseed)
p <- ggplot(dr, aes(x=X,y=Y,colour=Y,fill=highlight)) +
theme_bw() +
geom_jitter(alpha=0.7,width=0.5) +
stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax= "mean", size=0.3,width=0.33, geom = "crossbar")
plot(p)

Plot 3

这似乎也行不通。我可能忽略了一些微不足道的事情,或者一开始就走错了路,但我无法让它发挥作用。

附言我看过之前的问题,例如 this , thisthis ,但没有人直接回答我的问题。

最佳答案

单独绘制点怎么样?基本上,您将无法在抖动后恢复定位,至少不费吹灰之力。所以改为使用

set.seed(333)
dr <- data.frame(
X = sample(c("yes","no"),10, replace=T),
Y = rnorm(1000),
highlight = sample(c(1,NA),1000,replace=T,prob=c(5,995))
)
ind <- is.na(dr$highlight)

ggplot(dr, aes(x=X, y=Y, colour=Y)) +
geom_jitter(data=dr[ind, ], alpha=0.7, width=0.5) +
geom_jitter(data=dr[!ind, ], width=0.5, colour = "red", size=3) +
stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax= "mean",
size=0.3,width=0.33, geom = "crossbar") +
theme_bw()

enter image description here

关于r - 突出显示跨地 block 具有恒定抖动的一些点(ggplot2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38460090/

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