r - ggplot2 - 如何调整 stat_bin 和 stat 以使用不同变量的计算
问题描述
目标是生成x
条形所在位置的“直方图” sum(y)/count(x)
,其中y
是描述数据的另一个变量。重点是使用ggplot
binning 来进行分组部分。我不想自己计算分箱然后执行计算。
例子:
library(ggplot2)
library(data.table)
k <- runif(1000)
k <- k[order(k)]
y <- c(rbinom(n = 500, size = 1, prob = .05), rbinom(n = 500, size = 1, prob = .95))
w <- data.table(k, y)
所以一个plot(w$k, w$y)
给
所以理论上我正在寻找的是这样的:
ggplot(w, aes(k)) + geom_histogram(aes(y = stat(sum(y)/count)))
但它会产生这个:
解决方案
不确定这是否是您想要的,但 sum(y) 对于所有条形图都是相同的。
library(ggplot2)
library(data.table)
set.seed(13434)
k <- runif(1000)
k <- k[order(k)]
y <- c(rbinom(n = 500, size = 1, prob = .05), rbinom(n = 500, size = 1, prob = .95))
w <- data.table(k, y)
constant_value <- sum(w$y)
ggplot(w, aes(k)) + geom_histogram(aes(y = stat(constant_value/count)))
给出完全相同的情节
ggplot(w, aes(k)) + geom_histogram(aes(y = stat(sum(w$y)/count)))
编辑:
不确定这是否对您有帮助,这里我使用与 ggplot2s 默认值相同的 binwidth (30):
library(tidyverse)
w %>%
arrange(k) %>%
mutate(bin = cut_interval(1:length(k), length=30, labels=FALSE)) %>%
group_by(bin) %>%
summarise(mean_y = mean(y),
mean_k = mean(k),
width = max(k) - min(k)) %>%
ggplot(aes(mean_k, mean_y, width=width)) +
geom_bar(stat="identity") +
labs(x="k", y="mean y")
这使得这个数字:
推荐阅读
- javascript - 当键盘弹出时,如何使 React-Native 应用程序优雅地响应
- sql - 如何使用两个表进行sql查询
- android - 如何搜索蓝牙设备?
- asp.net-core - .Net Core - 在解决方案中引用另一个项目会阻止系统和其他依赖项被识别
- sql - 我可以使用 ODBC 连接在 Excel 中使用 Select DISTINCT 函数来避免导入重复的列条目吗?
- excel - Excel 2016:重复行填充 4 个重复数字的系列
- asp.net-mvc-4 - 使用 linq 跨多个表执行搜索
- python - 为什么 stdbuf 对 Python 没有影响?
- php - 如何在其他数据库表中使用一个选择更新数据
- azure - 无法使用 Azure PowerShell 注册 Microsoft.DataFactory