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

Gre*_*egg 2 r ggplot2

有没有办法让垂直线作为ggplot2中的数据点表示?形状选项 0-25 都不是我要找的,所以我猜我需要另一个加载项或一种更改形状 15 尺寸的方法。 这里的左图是我想要的示例看起来像。

这是一些简单的代码,以防它有助于编写响应:

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)
Run Code Online (Sandbox Code Playgroud)

Tho*_*ach 5

我看到了两种可能的方法来帮助生成类似于您在参考图中看到的垂直字形。

第一个是解决方法并利用该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
  )
Run Code Online (Sandbox Code Playgroud)

第一种方法利用该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()
Run Code Online (Sandbox Code Playgroud)

错误栏解决方法

第二种方法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()
Run Code Online (Sandbox Code Playgroud)

形状值 108

事实上,传入以下任何字符都会产生一条垂直线:"|", "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
Run Code Online (Sandbox Code Playgroud)

  • 实际上没有必要使用除了形状和大小之外的不同参数。`geom_point(pch = "|", cex = 7)` 和 `geom_point(shape = "|", size = 7)` 是相同的 (2认同)