如何使用ggplot

时间:2017-06-21 11:14:51

标签: r ggplot2

我目前正在使用ggplot。 我有以下数据:

num <- c(5,5,5,5,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8)
name <- c('4;1','4;1','4;1','4;1','4;2','4;2','4;2','3;3','4;2','3;3','4;2','3;3','4;2','4;3','3;4','4;3','3;4','4;3','3;4','4;3','3;4','4;3','3;4','4;3','3;4','4;3','4;4','4;4','4;4','4;4','4;4','4;4','4;4','4;4')
x <- c(1.7,1.8,1.9,2.0,1.5,1.6,1.7,1.8,1.8,1.9,1.9,2.0,2.0,1.4,1.5,1.5,1.6,1.6,1.7,1.7,1.8,1.8,1.9,1.9,2.0,2.0,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0)
min <- c(1.0,0.5,0.3,1.4,1.2,0.8,0.5,1.3,0.3,1.0,0.3,1.4,1.4,1.1,1.4,0.8,1.2,0.5,1.0,0.4,0.8,0.3,0.7,0.3,1.0,0.6,1.1,0.9,0.7,0.5,0.3,0.3,0.3,0.4)
max <- c(1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,1.4,0.6)
df <- data.frame(num,name,x,min,max)

可以看出,数据描述了配置范围。 我想做的是这样的: enter image description here

我尝试了geom_bar选项,但完全没有成功。有没有人有想法,我如何使用ggplot来获取这些数据和那种类型的情节?

P.S。 x轴应为df$x,y轴应为range(df$min, df$max)。颜色应取决于df$name

df$num只是对数据进行分组。有时一个df$name只有一个df$num,有时一个df$name有两个df$num

1 个答案:

答案 0 :(得分:0)

您的问题有点模糊,因为它不代表实际需要的图表,但这将是您的答案或一个良好的起点:

library(ggplot2)
#set the whiskers to min/max as well
#set the middle line to min or max
#set the color to interaction of name and num columns
p <- ggplot(df, aes(x = x, ymin = min, lower=min,
         middle= min, upper=max, ymax = max , fill = interaction(name, num))) +
geom_boxplot(stat="identity") + 
  coord_cartesian(ylim = c(0, 1.5))



library(ggpubr)
ggpar(p, legend.title = "name.num") #just change the legend title

这将给我们:

enter image description here