我正在制作一個具有多個不同方面的水平條形圖(y 軸是分類變數,x 軸是百分比)。我遇到的問題是,如果我使用 facet_wrap(),則每個方面的條形寬度都不同(如果我添加 space="free",則會出現奇怪的格式)。我了解到這個問題可以用 facet_grid() 解決,但是我遇到了每個方面下沒有編號的 x 軸的問題。
見下文:
library(tidyverse)
df <- structure(list(Race = c("Asian", "Black"),
Symptom1 = c(60L, 40L),
Symptom2 = c(50L, 20L),
Symptom3 = c(20L, 50L),
Symptom4 = c(70L, 50L),
Symptom5 = c(90L, 85L),
Symptom6 = c(100L, 30L),
Symptom7 = c(10L, 30L),
Symptom8 = c(30L, 20L),
Symptom9 = c(40L, 80L),
Symptom10 = c(60L, 40L)),
row.names = c(NA, -2L), class = "data.frame")
b <- df %>% pivot_longer(!Race, names_to = "Symptom", values_to ="Percentage")
b$Symptom <- fct_rev(factor(b$Symptom, levels = unique(b$Symptom)))
b$Group <- "Benign"
b[c(3:5,13:15),]$Group <- "Warning"
b[c(6:10,16:20),]$Group <- "Fatal"
這提供了一個具有相同條寬但僅在最底部顯示 x 軸的圖表(而不是也在良性和致命方面下)
ggplot(data=b, aes(x=Percentage, y= Symptom, fill = Race))
geom_bar(stat="identity", position=position_dodge())
facet_grid(Group~., scales = "free", space = "free")
這提供了一個圖形,在每個方面下都有一個編號的 x 軸,但條形寬度不均勻
ggplot(data=b, aes(x=Percentage, y= Symptom, fill = Race))
geom_bar(stat="identity", position=position_dodge())
facet_wrap(~Group, scales = "free")
這提供了均勻的條形寬度和編號的 x 軸,但也會在每個方面創建空白“空間”。
ggplot(data=b, aes(x=Percentage, y= Symptom, fill = Race))
geom_bar(stat="identity", position=position_dodge())
facet_wrap(~Group)
有針對這個的解決方法嗎?我想要一個有刻面的圖形,每個刻面的條形寬度相等,并且在每個刻面下都有重復編號的 x 軸。
謝謝!
uj5u.com熱心網友回復:
您可以使用lemon::facet_rep_grid(repeat.tick.labels = T)而不是ggplot2::facet_grid().
library(tidyverse)
library(lemon)
b <- structure(list(Race = c("Asian", "Asian", "Asian", "Asian", "Asian",
"Asian", "Asian", "Asian", "Asian", "Asian", "Black", "Black",
"Black", "Black", "Black", "Black", "Black", "Black", "Black",
"Black"),
Symptom = structure(c(10L, 9L, 8L, 7L, 6L, 5L, 4L, 3L, 2L, 1L, 10L, 9L,
8L, 7L, 6L, 5L, 4L, 3L, 2L, 1L),
.Label = c("Symptom10", "Symptom9", "Symptom8",
"Symptom7", "Symptom6", "Symptom5", "Symptom4",
"Symptom3", "Symptom2", "Symptom1"),
class = "factor"),
Percentage = c(60L, 50L, 20L, 70L, 90L, 100L, 10L, 30L, 40L, 60L, 40L, 20L, 50L,
50L, 85L, 30L, 30L, 20L, 80L, 40L),
Group = c("Benign", "Benign", "Warning", "Warning", "Warning", "Fatal", "Fatal",
"Fatal", "Fatal", "Fatal", "Benign", "Benign", "Warning", "Warning",
"Warning", "Fatal", "Fatal", "Fatal", "Fatal", "Fatal")),
row.names = c(NA, -20L),
class = c("tbl_df", "tbl", "data.frame"))
ggplot(data=b, aes(x=Percentage, y= Symptom, fill = Race))
geom_bar(stat="identity", position=position_dodge())
facet_rep_grid(Group~., scales = "free", space = "free", repeat.tick.labels = T)

由reprex 包(v2.0.1)于 2022-01-18 創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416781.html
標籤:
