簡體   English   中英

R 和 ggplot2 中的直方圖(軸刻度、中斷)

[英]Histograms in R with ggplot2 (axis ticks,breaks)

大家好,我有一些數據需要用來創建一個漂亮的直方圖。 首先,我使用hist()創建了一個基礎,經過研究我發現它使用 sturges 方法來計算需要多少個 bin。 為了制作更加可定制和美觀的直方圖,我嘗試使用ggplot package 並手動輸入我需要的 bin 數量。 正如您在照片中看到的那樣,直方圖在 y 軸上使用 hist() 的原因不同,它達到了 60 個頻率,而 ggplot 則超過了這個頻率。 此外,我很難讓 ggplot 在 XI 上顯示正確的刻度線我找不到任何關於如何修改刻度線的參考,以便它們與中斷對齊而不會弄亂圖表。 任何想法和幫助將不勝感激。

照片: https://prnt.sc/greVRNoGo67T https://prnt.sc/bMl29-2Fr5BN

解決問題的一種方法是做一些預處理和 plot 吧 plot。
預處理是用cut對數據進行分箱。 這會將連續變量Total_Volume轉換為分類變量,但由於它是在 pipe 中完成的,因此轉換是臨時的,原始數據保持不變。

中斷是等距的,標簽是四舍五入的中點值。

請注意,非常小的計數是用不可見的條繪制的。 但他們在那里。

suppressPackageStartupMessages({
  library(dplyr)
  library(ggplot2)
})

brks <- seq(min(x) - 1, max(x) + 1, length.out = 30)
labs <- round(brks[-1] + diff(brks)/2)

data.frame(Total_Volume = x) %>%
  mutate(Total_Volume = cut(x, breaks = brks, labels = labs)) %>%
  ggplot(aes(Total_Volume)) +
  geom_bar(width = 1) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

創建於 2022-10-02,使用reprex v2.0.2


數據創建代碼。

set.seed(2022)
n <- 1e6
x <- rchisq(n, df = 1, ncp = 5.5e6)
i <- x > 5.5e6
x[i] <- rnorm(sum(i), mean = 5.5e6, sd = 1e4)

創建於 2022-10-02,使用reprex v2.0.2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM