R 让数据在ggplot中达到极限,而不是去NA
我正在尝试使用R 让数据在ggplot中达到极限,而不是去NA,r,ggplot2,range,limit,R,Ggplot2,Range,Limit,我正在尝试使用ggplot2绘制一些标准错误(SE)条。在这个设置中,我有显示典型SE条的粗条,但在这些条的顶部,我覆盖了显示“可选”SE的细条(在数据的标题“se2”下)。这些可选SE条始终大于数据 我遇到的问题是,大型替代SEs被删除,警告消息告诉我有两行被删除,因为它们包含缺少的值。我只想让这些值无论如何都显示出来,如果可选SE条达到我设置的限制,那么它就会停在那里,仍然显示出来(这对读者意味着它会继续过去) 我已经发布了我正在使用的简化版本: # Load packages librar
ggplot2
绘制一些标准错误(SE)条。在这个设置中,我有显示典型SE条的粗条,但在这些条的顶部,我覆盖了显示“可选”SE的细条(在数据的标题“se2”下)。这些可选SE条始终大于数据
我遇到的问题是,大型替代SEs被删除,警告消息告诉我有两行被删除,因为它们包含缺少的值。我只想让这些值无论如何都显示出来,如果可选SE条达到我设置的限制,那么它就会停在那里,仍然显示出来(这对读者意味着它会继续过去)
我已经发布了我正在使用的简化版本:
# Load packages
library(dplyr)
library(ggplot2)
library(ggpubr)
# Make dataframe for group 1
df_values1 <- data.frame(
beta = c(0.07,0.04,0.3),
se = c(.01,0.01,0.008),
se2 = c(0.1,0.05,0.2),
outcome = c("Name 1",
"Name 2",
"Name 3"),
sample = c(rep("Group1",3))
)
# Make dataframe for group 2
df_values2 <- data.frame(
beta = c(0.15,-0.04,0.03),
se = c(.01,0.01,0.008),
se2 = c(0.1,.2,0.05),
outcome = c("Name 1",
"Name 2",
"Name 3"),
sample = c(rep("Group2",3))
)
# Make dataframe for group 3
df_values3 <- data.frame(
beta = c(0.22,0.18,-0.03),
se = c(.01,0.01,0.008),
se2 = c(1,0.05,0.01),
outcome = c("Name 1",
"Name 2",
"Name 3"),
sample = c(rep("Group3",3))
)
# Position dodge
pd <- position_dodge(0.7)
# Merge datasets
df_all <- rbind(df_values1, df_values2, df_values3)
# NOTE: use the levels of outcome from one of the non-merged datasets
df_all$outcome <- factor(df_all$outcome, levels = df_values1$outcome)
# Because the coordinates will be flipped, the order of the levels is 'reversed' here
df_all$sample <- factor(df_all$sample, levels = c('Group3', 'Group2', 'Group1'))
# Plot
picture <- ggplot(df_all, aes(x = outcome, y = beta, group = sample, colour = sample)) +
geom_hline(yintercept = c(-0.375, -0.125, 0.125, 0.375), size = 0.25, colour = 'grey95') +
geom_errorbar(aes(ymin = beta-1.96*se, ymax = beta+1.96*se), width = 0, alpha = 1, size = 2, position = pd) +
geom_errorbar(aes(ymin = beta-1.96*se2, ymax = beta+1.96*se2), width = 0, alpha = 1, size = 0.5, position = pd) +
geom_hline(yintercept = 0, size = 0.25) +
guides(colour = guide_legend(reverse = TRUE), shape = guide_legend(reverse = TRUE)) +
ylim(-0.5,0.5) +
coord_flip() +
scale_x_discrete(limits = rev(levels(df_all$outcome)))
picture
#加载包
图书馆(dplyr)
图书馆(GG2)
图书馆(ggpubr)
#为组1生成数据帧
df_值1请参见此处的两个答案:通常使用coord_cartesian
来防止数据被剪裁,但如果使用coord_flip
则可以在此范围内设置限制:
picture <- ggplot(df_all, aes(x = outcome, y = beta, group = sample, colour = sample)) +
geom_hline(yintercept = c(-0.375, -0.125, 0.125, 0.375), size = 0.25, colour = 'grey95') +
geom_errorbar(aes(ymin = beta-1.96*se, ymax = beta+1.96*se), width = 0, alpha = 1, size = 2, position = pd) +
geom_errorbar(aes(ymin = beta-1.96*se2, ymax = beta+1.96*se2), width = 0, alpha = 1, size = 0.5, position = pd) +
geom_hline(yintercept = 0, size = 0.25) +
guides(colour = guide_legend(reverse = TRUE), shape = guide_legend(reverse = TRUE)) +
coord_flip(ylim = c(-0.5,0.5)) +
scale_x_discrete(limits = rev(levels(df_all$outcome)))
画面完美!非常感谢。