15

Вопрос по ggplot2, r – Как создать нестандартный тип сюжета с помощью ggplot?

Я хотел бы сделать сюжет с ggplot, который выглядит очень близко к этому (нашел здесь):

enter image description here

Однако вместо частоты я хотел бы построить диапазоны для условий. Вот эскиз сюжета, который я хочу изготовить с 5 условиями:

enter image description here

Error: User Rate Limit Exceeded

id      start   end
1       20      35
2       60      75    
3       10      30
4       80      90
5       30      40

У меня есть около 100 начальных и конечных значений, которые я хотел бы построить таким образом на одном графике. Окончательный сюжет должен быть только двухцветным.

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

enter image description here

  • Вау, это именно то, что я ищу. У меня все еще проблемы с преобразованием данных в правильную структуру данных для вашего примера. Как я могу расплавить мои данные, какdat.melt? Я старалсяmelt(id, start, end), но это не сработало. Я отредактировал свой вопрос, чтобы показать структуру моих данных. Благодарю.

    от drbunsen
  • Круто, спасибо большое. Это было именно то, что я искал.

    от drbunsen
  • чтобы воспроизвести рисунок в исходном посте, используйте:dat <- data.frame(lets=1:5, low=c(20,60,10,80,30), mid=c(15,15,20,10,10), high=c(65,25,70,10,60))

    от
  • melt(yourdata, id.vars='id') даст вам структуру, как у меня. Вы также можете заменить первый цвет наNA так что только заштрихованный участок на вашей картинке окрашен.

    от
  • Error: User Rate Limit Exceeded

    от Ben Bolker
  • 13

    Error: User Rate Limit Exceeded

    library(ggplot2)
    library(reshape)
    dat <- data.frame(lets=letters[1:5], low=1:5, mid=3:7, high=10:14)
    dat.melt <- melt(dat, id.vars='lets')
    
    
    ggplot(dat.melt, aes(x=lets, y=value, fill=variable)) + 
      geom_bar(stat='identity') + 
      scale_fill_manual(breaks=c('low','mid','high'), values=c('blue','red','blue')) +
      coord_flip()