r - 当 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)。您是否将统计数据映射到错误的层?”
解决方案
无需使用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 of
ggplot2`,如下所示:
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 可重现示例
推荐阅读
- java - 如何在电子邮件中嵌入 Web 表单
- django - 基于单个不同列选择唯一行 - Django
- java - 如何从 Vaadin TreeGrid/Grid 的行和单元格中获取应用的背景色?
- vba - 由于数据类型不匹配导致的编码问题
- hive - 在 hive 中缩放列值在 0 和 1 之间
- linux - 如何对 csv 文件执行逐行操作?
- excel - .protect 停止连接(1).refresh 在完成之前
- android - 在改造 post 方法中为我的 MVC url 获取 404 错误
- excel - 从另一个表中过滤每一行的表
- mysql - 想要从餐桌上获得可用的预订时间