R语言 ggplot直方图中的距离0值

h7appiyu  于 2023-03-10  发布在  其他
关注(0)|答案(1)|浏览(165)

为了使我的采样数据可视化,我必须制作直方图,看看当距离变大时,观察的频率是否会降低。
在采样期间,我使用直方图功能在Excel工作表中可视化数据,结果如下:


.
现在我必须在Rstudio中重新创建这些直方图,以便能够使用数据和以后使用Distance Software绘制模型函数。
但我似乎遇到了一些关于制作直方图的问题。
利用hist()函数,我可以使用下面的代码重新创建Excel直方图。

hist(WPTD2$Distance, xlab = 'Distance', ylab = 'Number of Observations', main = 'Distances of individual woodpigeons during sampling 1-4', col = 'skyblue', breaks = seq(from=0,to=100,by=5))

然而,我尝试了相同的过程,但使用ggplot,因为这是推荐的,但我似乎不能得到相同的结果。即使当n=5时,频率/观察值与excel或hist()函数绘制的直方图不匹配。
使用的代码为:

ggplot(WPTD2, aes(x=Distance)) + geom_histogram(binwidth = 5)

j2qf4p5b

j2qf4p5b1#

您可以将断点设置为最接近hist输出。

library(tidyverse)

df <- tibble(a = sample(x = 1:100, 200, replace = TRUE, prob = 1/1:100)) 

df |>
  mutate(bin = cut(a, breaks = seq(from=0,to=100,by=5),
                   include.lowest = TRUE)) |> 
  count(bin)
#> # A tibble: 20 × 2
#>    bin          n
#>    <fct>    <int>
#>  1 [0,5]       80
#>  2 (5,10]      36
#>  3 (10,15]     13
#>  4 (15,20]     10
#>  5 (20,25]     14
#>  6 (25,30]      7
#>  7 (30,35]      8
#>  8 (35,40]      2
#>  9 (40,45]      2
#> 10 (45,50]      1
#> 11 (50,55]      5
#> 12 (55,60]      4
#> 13 (60,65]      1
#> 14 (65,70]      2
#> 15 (70,75]      1
#> 16 (75,80]      4
#> 17 (80,85]      1
#> 18 (85,90]      4
#> 19 (90,95]      2
#> 20 (95,100]     3

hist(df$a, breaks = seq(from=0, to=100,by=5))

df |> 
  ggplot(aes(a)) +
  scale_y_continuous(breaks = seq(0, 90, 10)) +
  geom_histogram(breaks = seq(from=0, to=100,by=5),
                 closed = "right")

相关问题