簡體   English   中英

ggplot x 軸擴展與構面不一致

[英]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.

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