向 R 中的图例添加额外的 geom_hline

时间:2020-12-26 18:11:00

标签: r ggplot2

这是我的数据:

df<-read.table (text=" MD   KA  PZ
ko1 65  44
ko2 64  43
ko3 56  42
ko4 71  56
ko5 67  66
ko6 88  64
ko7 44  45
ko8 76  33
ko9 33  22
ko10 84 90
", header=TRUE)

我只能得到一个名为 Name1 的 geom_hline

df1<- df %>% 
    pivot_longer(-1)
df1<-as.data.frame(df1)
gg<- ggplot(df1,aes(MD, value, fill = name))+
    geom_col(position = "dodge", color = "black", width = 1)+
    scale_fill_manual(values = c("red", "blue"))
cut <- data.frame(yintercept=20, Name1=factor(20))
gg + 
    geom_hline(aes(yintercept=yintercept, linetype=Name1),data=cut, show.legend=TRUE)

现在我想在 Name1 下添加另一个图例,将 70 作为 Name2。

1 个答案:

答案 0 :(得分:1)

试试这个:

library(ggplot2)
#Data
cut <- data.frame(yintercept=20, Name1=factor(20))
cut2 <- data.frame(yintercept=70, Name2=factor(70))
#Plots
gg + 
  geom_hline(aes(yintercept=yintercept, linetype=Name1),
             data=cut, show.legend=TRUE,color='red')+
  geom_hline(aes(yintercept=yintercept, color='70'),
             data=cut2, show.legend=TRUE,linetype=1)+
  scale_color_manual(values='green','Name2')+
  labs(fill='Name',color='Name2',linetype='Name1')+
  guides(fill=guide_legend(order = 1),
         linetype = guide_legend(order = 2,
                                 override.aes = list(color = 'red')), 
           colour = guide_legend(order = 3))

输出:

enter image description here

如果你想添加一个新的比例,试试这个:

#Code
gg + 
  geom_hline(aes(yintercept=yintercept, linetype=Name1),
             data=cut, show.legend=TRUE,color='red')+
  geom_hline(aes(yintercept=yintercept, color='70'),
             data=cut2, show.legend=TRUE,linetype=1)+
  scale_color_manual(values='green','Name2')+
  labs(fill='Name',color='Name2',linetype='Name1')+
  guides(fill=guide_legend(order = 1),
         linetype = guide_legend(order = 2,
                                 override.aes = list(color = 'red')), 
         colour = guide_legend(order = 3))+
  ggnewscale::new_scale_color()+
  geom_hline(aes(yintercept=yintercept, color='90'),
             data=cut3, show.legend=TRUE,linetype=1)+
  scale_color_manual(values='pink','Name3')
相关问题