我敢肯定有一種更優雅的方式來獲得這個情節,但這里有一些我必須使用的資料
score <- c(1, 2, 3, 4, 5, "X")
group1 <- c(0,0,5,-0.2,-4.9,0)
group2 <- c(0.1,0,-1.2,0.4,0.6,0.1)
group3 <- c(0.1,0,3.4,2.9,-6.4,0)
group4 <-c(0,0,-0.9,-0.3,1.3,0)
data <- data.frame(score=as.factor(score), group1=group1, group2=group2, group3=group3, group4=group4)
data_long <- pivot_longer(data, c(group1, group2, group3, group4))
sig <- rep(0, 24)
sig[c(3, 9, 11, 15, 17, 19)] <- 1
sig <- as.factor(sig)
data_long <- cbind(data_long, sig)
bars <- data_long %>% filter(score != 2,
score != "X") %>%
ggplot(aes(x = name, y=value, fill=sig))
geom_bar(stat="identity")
coord_flip()
scale_fill_manual(values=c("grey", "black"))
facet_wrap(~rating, scales = "free_x")
theme(legend.position = "none")
print(bars)
這給出了以下情節

這代表的是四個不同組的每個分數水平與預期值的偏差。(這是我們不關心 2 和 X 的問題的“特征”)。列中為 1 的度量具有sig統計顯著性。
我想做的是讓每個方面都以 0 為中心。
我嘗試了以下在此處找到的方法,但無法正常作業……尤其是Error: Discrete value supplied to continuous scale在嘗試使用的方法時,我一直在嘗試geom_blank()
uj5u.com熱心網友回復:
您可以提供一個功能到規模的限制。在下面的示例中,請注意我使用score了而不是ratingfor 方面,并coord_flip()通過交換 x 和 y 變數來規避 。下面的函式采用所謂的“lambda 語法”,但您也可以使用常規函式function(x) c(-1, 1) * max(abs(x))。
library(tidyverse)
# Data prep as in original question
# data_long <- ...
bars <- data_long %>% filter(score != 2,
score != "X") %>%
ggplot(aes(x = value, y=name, fill=sig))
geom_bar(stat="identity")
scale_fill_manual(values=c("grey", "black"))
scale_x_continuous(
limits = ~ c(-1, 1) * max(abs(.x))
)
facet_wrap(~score, scales = "free_x")
theme(legend.position = "none")
bars

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/435057.html
上一篇:ggplot多年來的增量
