根据 R 中的计数最小-最大范围添加中断以计数直方图(y 轴)?
Adding breaks to count (y axis) of a histogram according to the count min-max range in R?
我有一个 ggplot
直方图。
在 x 轴上我有一个因子变量 (1,2,3,4,..)
在 y 轴上我有计数。
我希望我的 y 轴从最小计数到最大计数相差 1。
我正在玩 scale_y_discrete
,但我不能接受 min(count)
、max(count)
并加上 = 1。
请指教
df <- structure(list(user_id = c(1L, 1L, 3L, 3L, 4L, 4L, 4L, 6L, 8L,
8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L), obs_id = c(1L,
30L, 133L, 134L, 144L, 160L, 162L, 226L, 272L, 273L, 274L, 275L,
276L, 299L, 307L, 322L, 323L, 324L, 325L, 326L, 327L, 328L),
n = c(6L, 6L, 10L, 6L, 11L, 11L, 12L, 6L, 3L, 2L, 5L, 2L,
3L, 5L, 12L, 11L, 25L, 7L, 5L, 2L, 5L, 17L)), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -22L), vars = "user_id", drop = TRUE, .Names = c("user_id",
"obs_id", "n"), indices = list(0:1, 2:3, 4:6, 7L, 8:12, 13:21), group_sizes = c(2L,
2L, 3L, 1L, 5L, 9L), biggest_group_size = 9L, labels = structure(list(
user_id = c(1L, 3L, 4L, 6L, 8L, 9L)), class = "data.frame", row.names = c(NA,
-6L), vars = "user_id", drop = TRUE, .Names = "user_id"))
您可以为 breaks
创建一个以轴的范围作为参数的函数。
根据 scale_continuous
的文档,breaks
可以采取:
A function that takes the limits as input and returns breaks as output
这是一个例子,我从 0 到最大 y 轴限制 1。(我使用 0 而不是最小计数,因为直方图从 0 开始。)
函数中的 x
是由 ggplot()
计算或用户设置的图中轴的限制。
byone = function(x) {
seq(0, max(x), by = 1)
}
您可以将此函数传递给 scale_y_continuous()
中的 breaks
。 limits
直接从绘图中提取并传递给函数的第一个参数。
ggplot(df, aes(user_id)) +
geom_histogram() +
scale_y_continuous(breaks = byone)
我有一个 ggplot
直方图。
在 x 轴上我有一个因子变量 (1,2,3,4,..)
在 y 轴上我有计数。
我希望我的 y 轴从最小计数到最大计数相差 1。
我正在玩 scale_y_discrete
,但我不能接受 min(count)
、max(count)
并加上 = 1。
请指教
df <- structure(list(user_id = c(1L, 1L, 3L, 3L, 4L, 4L, 4L, 6L, 8L,
8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L), obs_id = c(1L,
30L, 133L, 134L, 144L, 160L, 162L, 226L, 272L, 273L, 274L, 275L,
276L, 299L, 307L, 322L, 323L, 324L, 325L, 326L, 327L, 328L),
n = c(6L, 6L, 10L, 6L, 11L, 11L, 12L, 6L, 3L, 2L, 5L, 2L,
3L, 5L, 12L, 11L, 25L, 7L, 5L, 2L, 5L, 17L)), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -22L), vars = "user_id", drop = TRUE, .Names = c("user_id",
"obs_id", "n"), indices = list(0:1, 2:3, 4:6, 7L, 8:12, 13:21), group_sizes = c(2L,
2L, 3L, 1L, 5L, 9L), biggest_group_size = 9L, labels = structure(list(
user_id = c(1L, 3L, 4L, 6L, 8L, 9L)), class = "data.frame", row.names = c(NA,
-6L), vars = "user_id", drop = TRUE, .Names = "user_id"))
您可以为 breaks
创建一个以轴的范围作为参数的函数。
根据 scale_continuous
的文档,breaks
可以采取:
A function that takes the limits as input and returns breaks as output
这是一个例子,我从 0 到最大 y 轴限制 1。(我使用 0 而不是最小计数,因为直方图从 0 开始。)
函数中的 x
是由 ggplot()
计算或用户设置的图中轴的限制。
byone = function(x) {
seq(0, max(x), by = 1)
}
您可以将此函数传递给 scale_y_continuous()
中的 breaks
。 limits
直接从绘图中提取并传递给函数的第一个参数。
ggplot(df, aes(user_id)) +
geom_histogram() +
scale_y_continuous(breaks = byone)