gpt4 book ai didi

r - 在 ggplot2 中绘制带空格的分箱离散数据

转载 作者:行者123 更新时间:2023-12-02 01:24:38 25 4
gpt4 key购买 nike

我有整数数据,我想在数字范围内绘制其频率。我可以绘制直方图,但该图将条形图像连续数据一样放在一起。我希望条形之间有空格,以反射(reflect)数据是离散的。我尝试了各种方法来实现这一目标,但都不太成功。

在我看来,这应该是开箱即用的,我觉得我一定错过了一些基本的东西,比如我使用了错误的geom或者我不知道参数一需要。

这是一些数据和我的第一次绘图尝试。直方图对数据进行分类,但看起来是连续的。

library(dplyr)
library(ggplot2)

home_runs_df <- data.frame(home_runs = c(48, 40, 38, 37, 37, 37, 37, 37, 36, 36,
35, 34, 34, 34, 33, 33, 33, 33, 33, 33,
33, 32, 32, 32, 32, 32, 31, 31, 29, 29,
29, 29, 28, 28, 27, 27, 27, 27, 27, 26))

# Histogram bins, but plots like continuous.
home_runs_df %>%
ggplot(mapping = aes(x = home_runs)) +
geom_histogram(bins = 6)

我尝试设置条形宽度,但它已被弃用,并且消息建议使用 geom_bar(),尽管我就是这么用的!我想 stat = "bin" 最终会在后台调用 geom_histogram() 而不是 geom_bar()

home_runs_df %>%
ggplot(mapping = aes(x = home_runs)) +
geom_bar(stat = "bin", bins = 6, width = 0.5)

这可以让我更改宽度,但如何对数据进行分类?

home_runs_df %>%
ggplot(mapping = aes(x = home_runs)) +
geom_bar(stat = "count", width = 0.75)

我可以自己对数据进行分类,但我不愿意这样做。我希望 ggplot 能够为我做到这一点,但这些结果并不完全是我想要的。

  • 我缺少零高度垃圾箱 (41, 45]。
  • 另一方面,我确实喜欢 x 轴标 checkout 现的位置,并且我知道如何设置我想要的文本。
home_runs_df %>%
mutate(bin = cut(home_runs, breaks = c(seq(25, 48, by = 4), Inf))) %>%
ggplot(mapping = aes(x = bin)) +
geom_histogram(stat = "count")

我从ggplot引用文档中得到了这种方法。使用geom_bar()scale_x_binned()

  • 条形图的外观正是我想要的离散数据(之间有空格)。
  • 我不喜欢分箱之间刻度线的显示方式,就好像数据是连续的。
home_runs_df %>%
ggplot(aes(home_runs)) +
geom_bar() +
scale_x_binned(n.breaks = 6)

我敢打赌有一些棘手的方法可以将标签移动到我想要的位置。这种程度的定制有必要吗?我认为我想做的事情非常传统。我错过了什么?

我想要的是:

  • 分箱离散、整数数据。
  • 绘制箱中的频率。
  • 将整数数据视为离散数据而不是连续数据,每个组正下方的条形和标签之间有空格。

最佳答案

根据您想要实现的目标的描述,我认为使用geom_bar并使用ggplot2::cut_intervalggplot2::cut_width进行分箱这将是同时拥有带有填充和离散比例的条形的方法。

注意:我还添加了一个 scale_x_discrete(drop = FALSE) 以防您想显示没有 obs 的间隔。也是。

library(ggplot2)

ggplot(home_runs_df, aes(x = cut_interval(home_runs, 6))) +
geom_bar() +
scale_x_discrete(drop = FALSE)

ggplot(home_runs_df, aes(x = cut_width(home_runs, 4, boundary = 26))) + 
geom_bar() +
scale_x_discrete(drop = FALSE)

关于r - 在 ggplot2 中绘制带空格的分箱离散数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75073419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com