首页 > 解决方案 > ggplot2 geom_errorbar 具有不同的线型但具有实心须

问题描述

我正在用不同的线型制作误差线图

library(ggplot2)
library(plyr)

# Create dataset:
DF <- data.frame(
  group = rep(c("a", "b", "c", "d"),each=10),
  Ydata = c(seq(1,10,1),seq(5,50,5),seq(20,11,-1),seq(0.3,3,0.3)),
  Xdata = c(seq(1,10,1),seq(5,50,5),seq(20,11,-1),seq(0.3,3,0.3)))

# Summarise data:
subDF <- ddply(DF, .(group), summarise, 
               X = mean(Xdata), Y = mean(Ydata), 
               X_sd = sd(Xdata, na.rm = T), Y_sd = sd(Ydata))

# Plot data with error bars:
ggplot(subDF, aes(x = X, y = Y,linetype = group)) +
  geom_errorbar(aes(x = X, 
                    ymin = (Y-Y_sd), 
                    ymax = (Y+Y_sd)), 
                width = 1, size = 0.5) +
  geom_point(cex = 3)  +
  scale_linetype_manual(values = c("solid","twodash","longdash","longdash")) 

这给了我以下情节,但我希望末端胡须是实心的。任何人都可以帮忙吗?

在此处输入图像描述

标签: rggplot2

解决方案


实现所需结果的一种选择是geom_linerange通过如下方式切换并添加胡须geom_segment

library(ggplot2)

width <- .3
# Plot data with error bars:
ggplot(subDF, aes(x = X, y = Y, linetype = group)) +
  geom_segment(aes(
    x = X - width, xend = X + width,
    y = Y - Y_sd, yend = Y - Y_sd
  ),
  size = 0.5, linetype = "solid"
  ) +
  geom_segment(aes(
    x = X - width, xend = X + width,
    y = Y + Y_sd, yend = Y + Y_sd
  ),
  size = 0.5, linetype = "solid"
  ) +
  geom_linerange(aes(
    x = X,
    ymin = (Y - Y_sd),
    ymax = (Y + Y_sd)
  ),
  size = 0.5
  ) +
  geom_point(cex = 3) +
  scale_linetype_manual(values = c("solid", "twodash", "longdash", "longdash"))


推荐阅读