[英]ggplot x axis expansion not consistent with facets
我有一些數據想用 ggplot 顯示。 數據有幾個組(本例中為 5 個),每個組包含數量可變的子組。
# consistent simulation results
set.seed(1)
# packages
library(dplyr)
library(ggplot2)
# data
data.frame(group=c("group A",
rep("group B",2),
rep("group C",3),
rep("group D",4),
rep("group E",5)),
subgroup=c("a",
"a","b",
"a","b","c",
"a","b","c","d",
"a","b","c","d","e"),
var=rnorm(15,50,10))->data
我想用 x 軸上的子組和每個組的小平面顯示這些數據
data%>%
ggplot(aes(x=subgroup,
y=var))+
geom_col()+
facet_grid(.~group,
scales="free",
space="free")->p
plot p
看起來像這樣:沒有展開。 現在我想在 A 組周圍留出一點空間,所以我使用scale_x_discrete(expand=expansion(mult=n))
嘗試n
的不同數字
p+scale_x_discrete(expand=expansion(mult=0.1))+labs(title=0.1)
p+scale_x_discrete(expand=expansion(mult=0.2))+labs(title=0.2)
p+scale_x_discrete(expand=expansion(mult=0.5))+labs(title=0.5)
p+scale_x_discrete(expand=expansion(mult=0.7))+labs(title=0.7)
p+scale_x_discrete(expand=expansion(mult=1))+labs(title=1)
這給了我一些有趣的輸出:
有沒有辦法使每個面的間距一致? 似乎每個方面都有不同的行為,具體取決於存在的條數?
似乎每個方面都有不同的行為,具體取決於存在的條數?
這就是乘法展開的作用。 它乘以范圍 - 如果您乘以一個小范圍(1 或 2 個柱),它會填充一點點,如果您乘以一個大范圍(10 個柱),它會填充很多。
有沒有辦法使每個面的間距一致?
是的,使用加法擴展( expansion(add = X)
)而不是乘法( expansion(mult = X)
)。
通常,加法擴展對離散尺度更有意義,而乘法擴展對連續尺度更有意義。 這反映在默認值中,來自?discrete_scale
對於連續變量,默認值是在每一側擴展 5%,對於離散變量,在每一側擴展 0.6 個單位。
這個add = 0.6
default 是你在“無擴展”圖片中顯示的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.