首页 > 解决方案 > 当 Y 为 stat(count) 时创建从 Y 到 Y=0 的线 - ggplot2

问题描述

我正在尝试为我的每个数据点创建一条从我的 Y 点到 Y=0 的线。我的 Y 轴是“stat(count)”,当我添加“geom_segment”时似乎会产生问题。这可以创建我的图表:

ggplot(my_data, aes(x = X, y = stat(count))) +    
theme_minimal() +   stat_count(geom = "point") +   
ylim(0,4) +   
scale_x_continuous(breaks = seq(0,457,50))

但是,当我添加

  geom_segment(aes(xend=X, yend=0))

我收到以下错误:

“错误:美学必须是有效的计算统计数据。有问题的美学:y = stat(count)。您是否将统计数据映射到错误的层?”

标签: rggplot2

解决方案


无需使用stat = "count"in ggplot2,您可以计算外部每个对象的计数,ggplot2例如使用包中的count函数dplyr

在这里,我模拟了一个由 10 个具有不同计数值的不同数字组成的 X 序列:

library(dplyr)

df <- data.frame(x = sample(1:10,50,replace = TRUE))

df %>% count(x)

# A tibble: 10 x 2
       x     n
   <int> <int>
 1     1     4
 2     2     6
 3     3     2
 4     4    10
 5     5     4
 6     6     1
 7     7     9
 8     8     5
 9     9     5
10    10     4

然后,您可以将此计数作为yend参数传递给geom_segment ofggplot2`,如下所示:

library(dplyr)
library(ggplot2)

df %>% count(x) %>%
  ggplot(aes(x = x))+
  geom_point(aes(y = n))+
  geom_segment(aes(xend = x, y=0, yend = n))

在此处输入图像描述

是你要找的吗?

如果没有,您能否使用此链接提供数据集的可重现示例:如何制作出色的 R 可重现示例


推荐阅读