用于分隔图中因子组的垂直线(偏移)

问题描述 投票:0回答:1

我需要帮助来生成一条垂直线,该线可以使用 ggplot 在 geom_point 图中分隔我的字符组。下面是一个简化的示例。最终,我想在图上的点位置之间生成一条均匀的线,以表明以下位置存在不同的亚种。

我已经能够使用下面的代码生成直接位于 x 轴上已识别位置上的垂直线,但我希望它们在点之间的自由空间中偏移,而不是直接在现有点的顶部。因此,对于此示例,第一条线将位于挪威西部和瑞典之间的中间位置,第二条线将位于瑞典和芬兰之间的中间位置。我在示例数据框中包含了第三个变量,这是我想要用线条表示的实际内容,因为我猜测可能有一种方法可以使用亚种变量来识别组之间的划分。我还使用scale_x_discrete对我的样本数据进行了重新排序,因为我的实际数据集是按字母顺序绘制的,而不是按照我想要的亚种绘制的,需要这种重新排序。

数据<- data.frame(location = c("S Norway", "Sweden", "Finland", "W Norway"), mean = c(110, 112, 111, 110), subspecies = c("hybrid", "alpina", "schinzi", "hybrid"))

ggplot(数据 = 数据, aes(x = 位置, y = 平均值))+ geom_point()+

scale_x_discrete(limits = c("挪威南边", "挪威西边", "瑞典", "芬兰"))+

geom_vline(xintercept = c("W Norway", "Sweden"))

非常感谢!

ggplot2 geom-point geom-vline
1个回答
0
投票

像这样吗?

library(tidyverse)

data <- data.frame(
  location = c("S Norway", "Sweden", "Finland", "W Norway"),
  mean = c(110, 112, 111, 110),
  subspecies = c("hybrid", "alpina", "schinzi", "hybrid")
)

ggplot(data = data, aes(x = location, y = mean)) +
  geom_point() +
  scale_x_discrete(limits = c("S Norway", "W Norway", "Sweden", "Finland")) +
  geom_vline(xintercept = 1.5:(length(data$location)-0.5))

创建于 2024-04-06,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.