[英]ggplot manual legend scale_fill_manual for separate color factors
[英]Faulty legend in R with “color_scale_manual”
能否請別人告訴我為什么我的圖例無法正確顯示(圖例中Hypericin的點是綠色而不是藍色)。
這是我的代碼:
ggplot(df,aes(x=x, y=y))+
labs(list(title='MTT_darktox',x=expression('Concentration['*mu*'M]'),y='Survival[%]'))+
scale_x_continuous(breaks=seq(0,50,2.5))+
scale_y_continuous(breaks=seq(0,120,20))+
expand_limits(y=c(0,120))+
geom_point(data=df,shape = 21, size = 3, aes(colour='Hypericin'), fill='blue')+
geom_errorbar(data=df,aes(ymin=y-sd1, ymax=y+sd1),width = 0.8, colour='blue')+
geom_line(data=df,aes(colour='Hypericin'), size = 0.8)+
geom_point(data=df2,shape = 21, size = 3, aes(colour='#212'), fill='green')+
geom_errorbar(data=df2,aes(ymin=y-sd1, ymax=y+sd1),width = 0.8, colour='green')+
geom_line(data=df2,aes(colour='#212'), size = 0.8)+
scale_colour_manual(name='Batch_Nr', values=c('Hypericin'='blue','#212' ='green'))
謝謝!
一定會幫助您查看一些可重復性的數據。
猜測數據的結構會導致類似這樣的情況。
# create some fake data:
df <- data.frame(x = rep(1:10, 2),
y = c(1/1:10, 1/1:10 + 1),
error = c(rnorm(10, sd = 0.05), rnorm(10, sd = 0.1)),
group = rep(c("Hypericin", "#212"), each = 10))
可以這樣繪制:
# plot the data:
library(ggplot2)
ggplot(df, aes(x = x, y = y, color = group)) +
geom_line() +
geom_point() +
geom_errorbar(aes(ymin = y - error, ymax = y + error)) +
scale_colour_manual(name='Batch_Nr',
values = c("Hypericin" = "blue", "#212" = "green"))
結果是這樣的情節:
首先,如果您已經在第一個ggplot
定義了data = df
,則無需在ggplot-functions中添加data = df
。
此外,ggplot最喜歡整潔的數據(又名長格式。有關此內容,請參見http://vita.had.co.nz/papers/tidy-data.pdf )。 因此,可以添加兩個數據集( df
和df2
),但合並它們並在數據集中創建每個變量的好處是,它也使您更容易理解數據。
您的錯誤(一個綠色的點,而不是一個藍色的點)來自這種混亂。 在第6行中,您聲明fill = "blue"
,以后您將不會對其進行更改(即,您未指定如下內容: scale_fill_color(...)
。
那會給你你想要的嗎?
最后,對於以后的問題,請確保遵循MWE原理(最小工作示例),使每個試圖回答該問題的人的生活都更輕松: 如何制作出色的R可重現示例?
非常感謝您的幫助! 我將考慮合並以后的代碼。 同時,我找到了另一種解決方案,無需更改所有內容即可獲得想要的功能(盡管可能不是最干凈的方法)。 我剛剛添加了另一行來覆蓋圖例外觀:
guides(colour= guide_legend(override.aes=list(linetype=c(1,1)
,shape=c(16,16))))
導致 :
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.