向 ggplot 添加点、符号和图例

rk1*_*123 1 plot r legend ggplot2

我使用 ggplot 创建了一个图(下面带有 DF1 数据集)。我想在这个情节上添加两点:

  1. 基于 DF.SYMBOL 数据集添加符号(在两个 ID 的指定时间:按事件不同的形状和颜色)。
  2. 根据 DF.LINE 数据集在条形内添加一条垂直线,并以 CONC 作为图例

我将不胜感激您的建议!

在此输入图像描述

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 数据集的值的黑线。

在此输入图像描述

Gre*_*gor 5

这应该可以做到。我用于geom_errorbarh垂直线 - 我不知道有什么更好的方法可以在离散尺度上获得穿过水平条的垂直线。为了更好地控制厚度,您可以考虑将 更改geom_segmentgeom_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)

在此输入图像描述