gpt4 book ai didi

r - x 轴上的 geom_vline 垂直线与分类数据 : ggplot2

转载 作者:行者123 更新时间:2023-12-04 00:37:07 24 4
gpt4 key购买 nike

我有按类排序的数据,如本文所述: https://www.r-bloggers.com/from-continuous-to-categorical/这样可以更容易地查看哪些值是常见的。创建这些类后,我想创建一个具有不同类频率的条形图,我使用以下示例代码进行操作:

set.seed(1)
df.v <- data.frame(val = rnorm(1000, mean(4, sd=2)))
df.v$val.clss <- cut(df.v$val, seq(min(df.v$val), max(df.v$val), 1))
p1 <- ggplot(data = df.v)+
geom_bar(aes(val.clss))
plot(p1)

我想不通的是,如何在 4 左右的两个条之间精确地添加一条垂直线,因此该线完全位于 x 轴值处。我找到了这篇文章,但这对我没有帮助: How to get a vertical geom_vline to an x-axis of class date?任何帮助表示赞赏。也许我太新了,无法使解决方案适应我的data.frame,如果是这样,请原谅这个问题。

最佳答案

如果您知道要让线条在其间经过的两个条的标签,则可以将它们的位置转换为数字(它们映射到的因子),然后传递:

myLoc <- 
(which(levels(df.v$val.clss) == "(2.99,3.99]") +
which(levels(df.v$val.clss) == "(3.99,4.99]")) /
2


p1 +
geom_vline(aes(xintercept = myLoc))

如果是跳过组,您可能应该确保绘制了因子的所有级别。对连续数据进行分箱后,最好不要丢弃中间级别。

p1 +
geom_vline(aes(xintercept = myLoc)) +
scale_x_discrete(drop = FALSE)

或者,您可以将缺失的级别从数据中全部删除(在绘图和计算 myLoc 之前):

df.v <- droplevels(df.v)

那么它将只包括将要绘制的内容。

作为最后一个选项,您可以只使用 geom_histogram 自动进行分箱,但将数据保留在原始比例上,这样可以更轻松地添加一行。

ggplot(df.v
, aes(val)) +
geom_histogram(binwidth = 1) +
geom_vline(xintercept = 4)

关于r - x 轴上的 geom_vline 垂直线与分类数据 : ggplot2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39836781/

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