我目前正在使用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)
我尝试了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
。
答案 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
这将给我们: