亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

R:多層ggplot的自定義圖例

R:多層ggplot的自定義圖例

臨摹微笑 2019-12-11 14:09:03
我正在嘗試為ggplot獲取自定義圖例,其中的數據來自兩個單獨的數據幀。請參閱下面的最小可復制示例。我要完成的工作是使用一個圖例來描述功能區填充,黑線和紅線。require(ggplot2)x=seq(1,10,length=100)data=data.frame(x,dnorm(x,mean=6.5,sd=1))names(data)=c('x','new.data')x.ribbon=seq(1,10,length=20)ribbon=data.frame(x.ribbon,                  dnorm(x.ribbon,mean=5,sd=1)+.01,                  dnorm(x.ribbon,mean=5,sd=1)-.01,                  dnorm(x.ribbon,mean=5,sd=1))names(ribbon)=c('x.ribbon','max','min','avg')ggplot()+geom_ribbon(data=ribbon,aes(ymin=min,ymax=max,x=x.ribbon),fill='lightgreen')+  geom_line(data=ribbon,aes(x=x.ribbon,y=avg),color='black')+  geom_line(data=data,aes(x=x,y=new.data),color='red')+  xlab('x')+ylab('density')
查看完整描述

2 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

不用設置colour和fill,而是使用幾何美學來 映射它們aes,然后使用scale_xxx_manual或scale_xxx_identity。


例如


ggplot()+geom_ribbon(data=ribbon,aes(ymin=min,ymax=max,x=x.ribbon,fill='lightgreen'))+

    geom_line(data=ribbon,aes(x=x.ribbon,y=avg,color='black'))+

    geom_line(data=data,aes(x=x,y=new.data,color='red'))+

    xlab('x')+ylab('density') + 

    scale_fill_identity(name = 'the fill', guide = 'legend',labels = c('m1')) +

    scale_colour_manual(name = 'the colour', 

         values =c('black'='black','red'='red'), labels = c('c2','c1')

請注意,您必須指定guide = 'legend'強制scale_..._identity生成圖例。


scale_...manual您可以為值傳遞命名向量-名稱應為調用中的顏色geom_...,然后可以很好地標記。

)



查看完整回答
反對 回復 2019-12-12
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

順便說一句,為進一步澄清,我會說:geom_line(aes(..., color = 'a')...)然后scale_color_manual(..., values = c('a' = 'black', ...))。這樣一來,很明顯,其中的字符串aes(color = 'string')只是一個綁定,實際顏色將是您在中定義的顏色scale_color_manual()

查看完整回答
反對 回復 2019-12-12
  • 2 回答
  • 0 關注
  • 616 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號