gpt4 book ai didi

r - ggplot : Add geom_rect using categorical value for min and max values

转载 作者:行者123 更新时间:2023-12-05 08:22:30 24 4
gpt4 key购买 nike

我有一个非常基本的 ggplot:

library(ggplot)

ggplot(mpg, aes(x=displ, y=manufacturer)) +
geom_point() +
geom_rect(aes(xmin=1.8, xmax=3.0, ymin='audi', ymax='audi', fill='red'))

我只想为 y 轴上的奥迪行添加一个从 x 轴值 1.8 到 3.0 的条。有没有办法在ggplot中实现这一点?其他人可以就此问题提供的任何帮助将不胜感激!

最佳答案

基于@Greg 的回答,我相信在 geom_rect 中的 aes 调用中重新创建因子水平会更安全。这是因为它是因素 levels 而不是强制转换为整数的字符串。

ggplot(mpg, aes(x=displ, y=manufacturer)) +
geom_point() +
geom_rect(aes(ymin = which(levels(as.factor(manufacturer))=="audi") -0.5,
ymax = which(levels(as.factor(manufacturer))=="audi") +0.5,
xmin=1.8,
xmax=3,
fill="red"))

enter image description here

即使因子级别已从默认值更改,这仍然有效:

my.mpg <- mpg
my.mpg$manufacturer <-as.factor(my.mpg$manufacturer)
my.mpg$manufacturer <-factor(my.mpg$manufacturer,
levels = rev(levels(my.mpg$manufacturer)))
ggplot(my.mpg, aes(x=displ, y=manufacturer)) +
geom_point() +
geom_rect(aes(ymin = which(levels(as.factor(manufacturer))=="audi") -0.5,
ymax = which(levels(as.factor(manufacturer))=="audi") +0.5,
xmin=1.8,
xmax=3,
fill="red"))

enter image description here

相比之下,which(unique(...)) 方法失败了:

man_list <- unique(my.mpg$manufacturer)

ggplot(my.mpg, aes(x=displ, y=manufacturer)) +
geom_point() +
# geom_rect(aes(xmin=1.8, xmax=3.0, ymin= "audi", ymax=lead("audi"), fill='red'))
geom_rect(aes(ymin = which(man_list=="audi")-0.5,
ymax = which(man_list=="audi")+0.5,
xmin=1.8,
xmax=3,
fill="red"))

enter image description here

关于r - ggplot : Add geom_rect using categorical value for min and max values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61942906/

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