R中带有“color_scale_manual”的错误图例

时间:2016-11-10 09:59:40

标签: r ggplot2

有人可以告诉我为什么我的传奇没有正确显示(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 Plot

2 个答案:

答案 0 :(得分:2)

肯定会有助于查看一些可重现性的数据。

猜测数据的结构会产生类似的结果。

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

这导致了这样的情节:

Plot1

解释

首先,如果您已在第一个data = df调用中定义了ggplot,则无需在ggplot函数中添加df

此外,ggplot最喜欢整洁的数据(也就是长格式。请在此处阅读更多信息http://vita.had.co.nz/papers/tidy-data.pdf)。因此,添加两个数据集(df2fill = "blue")是可能的,但合并它们并在数据集中创建每个变量的优势在于它也更容易理解您的数据。

你的错误(绿点而不是蓝点)来自这种混乱。在第6行中,您说scale_fill_color(...),您之后不会更改(例如,您没有指定类似的内容:<div class="elem-1"></div> <div class="elem-2"></div>

这会给你你想要的吗?

最后,对于未来的问题,请确保遵循MWE原则(最小工作示例),让每个人的生活都更容易回答问题:How to make a great R reproducible example?

答案 1 :(得分:0)

非常感谢你的帮助!我将考虑合并未来的代码。 与此同时,我找到了另一种解决方案,可以在不改变所有内容的情我刚刚添加了另一行来覆盖图例外观:

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

导致:

R plot new