gpt4 book ai didi

r - 在离散的 x 轴上绘制 geom_vline

转载 作者:行者123 更新时间:2023-12-04 10:29:25 25 4
gpt4 key购买 nike

我无法在绘图的 x 轴上绘制离散(因子)级别的垂直线。在此解决方案中似乎有效 drawing vertical line with factor levels in ggplot2

但是 OTH 这不适用于 geom_tile

基本上,要删除 geom_tile 中的空白区域,我需要将 x 值转换为 numeric 到 factor levels 。但同时我想绘制一个带有数值的geom_vline

这是问题所在

 df <- data.frame(
x = rep(c(2, 5, 7, 9, 12), 2),
y = rep(c(1, 2), each = 5),
z = factor(rep(1:5, each = 2)))


library(ggplot2)
ggplot(df, aes(x, y)) +
geom_tile(aes(fill = z), colour = "grey50")+
geom_vline(aes(xintercept=6),linetype="dashed",colour="red",size=1)

enter image description here

要删除 geom_tile 中的空白,需要将 x 转换为 factor(x)但是当我这样做时 geom_vline 消失了!

enter image description here

最佳答案

一种解决方案可能是修改您的数据 - 将其转化为伪因子

# Get rank of each x element within group
df$xRank <- ave(df$x, df$y, FUN = rank)

x y z xRank
1 2 1 1 1
2 5 1 1 2
3 7 1 2 3
4 9 1 2 4
5 12 1 3 5
6 2 2 3 1
7 5 2 4 2
8 7 2 4 3
9 9 2 5 4
10 12 2 5 5

绘制值排名而不是值并将 x 轴元素标记为原始值:

library(ggplot2)
ggplot(df, aes(xRank, y)) +
geom_tile(aes(fill = z), colour = "grey50") +
# On x axis put values as labels
scale_x_continuous(breaks = df$xRank, labels = df$x) +
# draw line at 2.5 (between second and third element)
geom_vline(aes(xintercept = 2.5),
linetype = "dashed", colour = "red",size = 1)

enter image description here

关于r - 在离散的 x 轴上绘制 geom_vline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50870284/

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