R的ggplot2中geom_point()中数据点的垂直线

htrmnn0y  于 2023-02-26  发布在  其他
关注(0)|答案(1)|浏览(242)

是否有任何方法可以将垂直线作为ggplot2中的数据点表示形式?形状选项0-25都不是我所需要的,所以我猜我需要另一个加载项或一种方法来更改形状15的尺寸。The left chart here是我希望它看起来像什么的示例。
下面是一些简单的代码,如果它有助于编写响应:

a <- c(1, 3, 5)
b <- c(2, 4, 6)
df <- data.frame(a, b)

ggplot(data = df, aes(x = a, y = b)) +
geom_point(shape = 15)
plicqrtu

plicqrtu1#

我看到了两种可能的方法来帮助生成与您在参考图中看到的类似的垂直图示符。
第一种方法是使用geom_errorbar()函数,第二种方法是将特定的数值传递给shape参数,但需要scale_shape_identity()函数的帮助。

# Reproducing your data

a <- c(1, 3, 5)
b <- c(2, 4, 6)
df <- data.frame(a, b)

# Let's specify the upper and lower limits manually

df <- df |>
  mutate(
    upper = +0.5 + b,
    lower = -0.5 + b
  )

第一种方法利用geom_errorbar()函数,只是我们设置width = 0来抑制水平线。注意,我手动设置了上限和下限,并将它们追加到数据框中。调整垂直距离以满足您的需要。

# 1st Method

ggplot(data = df, aes(x = a, y = b)) +
  geom_errorbar(aes(ymin = lower, ymax = upper), color = "red", width = 0) +
  theme_classic()

第二种方法直接利用shape参数。注意,geom_point()函数的shape参数可容纳各种不同的值。通常使用0到25之间的形状值,但也存在其他值。特别是,形状32到127对应不同的ASCII字符。在scale_shape_identity()上分层,你可以传递任何法律的的形状值。值73或108应该工作得很好。
为了提供更深入的理解,我们传递给shape参数的数值也称为ASCII码,特别是,代码73对应于大写字母“I”。(即,"I"),并且代码108对应于小写字母“l”。(即"l")。在绘图中,字母将不带衬线(即交叉线),将所有点转换为竖线。请参阅以下演示:

# 2nd Method

ggplot(data = df, aes(x = a, y = b)) + 
  scale_shape_identity() +
  geom_point(shape = 108, size = 10, color = "red") +
  theme_classic()

实际上,传入以下任何字符都将生成一条竖线:"|""l""I"中的任意一个。

# Other possible solutions

geom_point(shape = "I")  # ASCII code 73
geom_point(shape = "l")  # ASCII code 108
geom_point(shape = "|")  # ASCII code 124

相关问题