rk1*_*123 1 plot r legend ggplot2
我使用 ggplot 创建了一个图(下面带有 DF1 数据集)。我想在这个情节上添加两点:
我将不胜感激您的建议!
ID<-rep(c(1,2),each=6)
START <- c(0, 42,57,300,520,710, 0,31,56,85,120,300)
END <- c(42,57,300,520,710,711,31,56,85,120,300,301)
TYPE <- c("S","NR","R","NR","R","R","S","R","NR","R","NR","NR")
DF1 <-data.frame(ID,START,END,TYPE)
DF1
# converting ID from numeric to factor
DF1 %<>%
dplyr::mutate(ID = factor(ID))
ggplot(DF1,aes(y=ID,yend=ID,x=START,xend=END,color=TYPE))+
geom_segment(aes(y=ID,yend=ID,x=START,xend=END),size=6,lineend= "butt")
Run Code Online (Sandbox Code Playgroud)
DF.SYMBOL数据集,用于向绘图添加点和符号
ID<-rep(c(1,2),each=2)
EVENT <- rep(c("TBR","PBR"))
TIME <- c(90, 220,120,200)
DF.SYMBOL<-data.frame(ID,EVENT,TIME)
Run Code Online (Sandbox Code Playgroud)
DF.LINE数据集在条形图中添加垂直线,图例中的 CONC 在每个 ID 的垂直线上方
ID <- c(1,2)
TIME <- c(400, 265)
CONC <- c(23,97)
DF.LINE<-data.frame(ID,TIME, CONC)
Run Code Online (Sandbox Code Playgroud)
这是所需的图(在 powerpoint 上编辑):基于 DF.SYMBOL 数据集的符号和基于 DF.LINE 数据集的值的黑线。
这应该可以做到。我用于geom_errorbarh
垂直线 - 我不知道有什么更好的方法可以在离散尺度上获得穿过水平条的垂直线。为了更好地控制厚度,您可以考虑将 更改geom_segment
为geom_rect
.
DF.SYMBOL$ID = factor(DF.SYMBOL$ID)
DF.LINE$ID = factor(DF.LINE$ID)
ggplot(DF1,aes(y=ID))+
geom_segment(aes(yend=ID, x=START, xend=END, color = TYPE),size=6,lineend= "butt") +
geom_point(data = DF.SYMBOL, aes(x = TIME, fill = EVENT, shape = EVENT), size = ) +
scale_shape_manual(values = c(21, 24)) +
scale_fill_manual(values = c("red", "yellow")) +
geom_errorbarh(data = DF.LINE, aes(xmin = TIME, xmax = TIME), height = 0.1) +
geom_text(data = DF.LINE, aes(x = TIME, label = CONC), vjust = -1.5)
Run Code Online (Sandbox Code Playgroud)