这是一个棘手的问题,因为我正在弯曲ggplot的规则。
请看下面的例子。 我想用一条线(中心到中心)连接每对黑色和灰色的光线。
我尝试使用geom_path()。请参阅注释掉的行,这将产生错误消息:“错误:美学必须是长度1或与数据(6)相同:x,y,颜色,组”
我认为geom_path()和geom_line()可能不是正确的方法。我想我需要用指定坐标绘制一条线的东西,然后我试着找出一种提供坐标的方法(类似于geom_rect)。 有办法吗?
#create dataframe
set.seed(1)
N = 20
rownameorder <- c("C", "B", "A", "D", "E", "F")
datforgraph <- data.frame(
ID = rep(c(1001:1020), each=6),
CLASS = rep(20, N*6),
TEST = rep(rownameorder, N),
T1 = round(rnorm(N*6, 50, 10)),
T2 = round(rnorm(N*6, 50, 10))
)
datforgraph$T1UPPER <- datforgraph$T1 + 5
datforgraph$T1LOWER <- datforgraph$T1 - 5
datforgraph$T2UPPER <- datforgraph$T2 + 5
datforgraph$T2LOWER <- datforgraph$T2 - 5
studentdata <- subset(datforgraph, ID==1002)
#create graphics
COLORS <- c("#FF9999", "#FFFF99", "#99FF99", "#99C199", "#9999FF")
RECTS <- data.frame(ystart = c(20,30,40,60,70), yend = c(30,40,60,70,80))
ggp <- ggplot() +
coord_cartesian(ylim=c(10,90), expand=FALSE) +
scale_x_discrete() +
scale_y_continuous() +
geom_blank(data=studentdata, aes(x=factor(TEST, rownameorder))) +
geom_rect(data=RECTS, aes(ymin=ystart, ymax=yend, xmin=0, xmax=7), fill=COLORS) +
geom_rect(data=studentdata, fill="black", alpha=0.99, color="black", size=0.1, aes(xmin=as.numeric(factor(TEST, rownameorder)) - 0.3, xmax=as.numeric(factor(TEST, rownameorder)) - 0.1, ymin=T1LOWER , ymax=T1UPPER)) +
geom_rect(data=studentdata, fill="darkgrey", alpha=0.99, color="black", size=0.1, aes(xmin=as.numeric(factor(TEST, rownameorder)) + 0.1, xmax=as.numeric(factor(TEST, rownameorder)) + 0.3, ymin=T2LOWER , ymax=T2UPPER)) +
#geom_path(data=studentdata, mapping=aes(x=c(as.numeric(factor(TEST, rownameorder)) - 0.3, as.numeric(factor(TEST, rownameorder)) + 0.3), y=c(T1, T2), color=factor(TEST, rownameorder), group=1)) +
theme_classic() +
theme(axis.line.y = element_blank(), axis.title.y = element_blank(), axis.ticks.y = element_blank(), axis.text.y = element_blank()) +
xlab("") +
ylab("")
ggp