簡體   English   中英

R中帶有“ color_scale_manual”的圖例錯誤

[英]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')) 

謝謝!

R圖

一定會幫助您查看一些可重復性的數據。

猜測數據的結構會導致類似這樣的情況。

# 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")) 

結果是這樣的情節:

劇情1

說明

首先,如果您已經在第一個ggplot定義了data = df ,則無需在ggplot-functions中添加data = df

此外,ggplot最喜歡整潔的數據(又名長格式。有關此內容,請參見http://vita.had.co.nz/papers/tidy-data.pdf )。 因此,可以添加兩個數據集( dfdf2 ),但合並它們並在數據集中創建每個變量的好處是,它也使您更容易理解數據。

您的錯誤(一個綠色的點,而不是一個藍色的點)來自這種混亂。 在第6行中,您聲明fill = "blue" ,以后您將不會對其進行更改(即,您未指定如下內容: scale_fill_color(...)

那會給你你想要的嗎?

最后,對於以后的問題,請確保遵循MWE原理(最小工作示例),使每個試圖回答該問題的人的生活都更輕松: 如何制作出色的R可重現示例?

非常感謝您的幫助! 我將考慮合並以后的代碼。 同時,我找到了另一種解決方案,無需更改所有內容即可獲得想要的功能(盡管可能不是最干凈的方法)。 我剛剛添加了另一行來覆蓋圖例外觀:

guides(colour= guide_legend(override.aes=list(linetype=c(1,1)
                                                       ,shape=c(16,16))))

導致 :

R圖新

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM