Добавление точек, символов и легенд в ggplot - PullRequest
0 голосов
/ 23 октября 2018

Я создал график, используя ggplot (с набором данных DF1 ниже).Я хотел бы добавить два дополнения к этому графику:

  1. для добавления символ на основе набора данных DF.SYMBOL (в указанное время для двух идентификаторов: разной формы и цвета в зависимости от события).
  2. для добавления вертикальной линии в строке с CONC в качестве легенды на основе набора данных DF.LINE

Буду признателен за ваше предложение!

enter image description here

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")
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)
DF.LINE набор данных для добавления вертикальной линии на панели с CONC влегенда над вертикальной линией для каждого идентификатора
ID <- c(1,2)
TIME <- c(400, 265)
CONC <- c(23,97)
DF.LINE<-data.frame(ID,TIME, CONC)

Вот требуемый график (отредактированный в powerpoint): символы на основе набора данных DF.SYMBOL и черная линия со значением на основе набора данных DF.LINE.

enter image description here

1 Ответ

0 голосов
/ 23 октября 2018

Это должно сделать это.Я использовал 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)

enter image description here

...