我一直在嘗試使用 tidybayes 包中的 stat_pointinterval() 函式來創建一些圖形,但在自定義外觀時遇到了一些問題。我在下面添加了我正在使用的代碼示例以及輸出圖形的示例。我想要做的是找到一種方法來獨立改變點的大小和每個間隔。到目前為止,我已經能夠改變點的大小,但我只能找到一種方法來改變整條線的寬度,而不是獨立地改變每個線段(見下圖)。任何幫助都會很棒,或者如果有人對如何創建這樣的情節有更好的想法。謝謝!
library(tidyverse)
library(tidybayes)
treat <- rep(c("Control", "T1", "T2", "T4"),100)
est <- rnorm(400,0,1)
df <- as.data.frame(cbind(treat, est)) %>%
mutate(treat = as.factor(treat),
est = as.numeric(est))
ggplot(data = df, aes(x=treat, y=est))
stat_pointinterval()

ggplot(data = df, aes(x=treat, y=est))
stat_pointinterval(.width = c(0.5,0.95),
size = 10)

uj5u.com熱心網友回復:
獨立設定點和線段大小的一種方法是通過引數設定點大小,并通過默認值為的引數point_size設定線段大小:rangescale_size_continuousrange=c(1, 6)
library(tidyverse)
library(tidybayes)
set.seed(123)
treat <- rep(c("Control", "T1", "T2", "T4"), 100)
est <- rnorm(400, 0, 1)
df <- as.data.frame(cbind(treat, est)) %>%
mutate(
treat = as.factor(treat),
est = as.numeric(est)
)
ggplot(data = df, aes(x = treat, y = est))
stat_pointinterval(
.width = c(0.5, 0.95),
point_size = 10
)
scale_size_continuous(range = c(5, 20))

第二種選擇是使用在aes上after_stat映射factor(.width)(其中factor轉換為離散變數)并通過以下方式設定大小:sizescale_size_manual
ggplot(data = df, aes(x = treat, y = est))
stat_pointinterval(
aes(size = after_stat(factor(.width))),
.width = c(0.5, 0.95),
point_size = 10
)
scale_size_manual(values = c("0.5" = 10, "0.95" = 5))

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471562.html
