R ggplot2:使用stat_smooth时无法覆盖第二个图例

R ggplot2:使用stat_smooth时无法覆盖第二个图例,r,ggplot2,R,Ggplot2,南瓜头盔(3.1.2),ggplot2_1.0.0 library(ggplot2) some_diamonds <- subset(diamonds, color %in% c('D', 'E', 'F')) g <- ggplot(some_diamonds, aes(carat, depth, linetype=cut, colour=color)) + stat_smooth(se=F) + scale_colour_grey() 事实上,我甚至不知道如何访问第二个

南瓜头盔(3.1.2),ggplot2_1.0.0

library(ggplot2)
some_diamonds <- subset(diamonds, color %in% c('D', 'E', 'F'))
g <- ggplot(some_diamonds, aes(carat, depth, linetype=cut, colour=color)) +
    stat_smooth(se=F) + scale_colour_grey()
事实上,我甚至不知道如何访问第二个图例的任何元素。这个

g + scale_colour_grey(guide=guide_legend(title="Title", order=2)) 
只需将第一个图例的标题更改为“标题”;同样地

g + scale_colour_grey() + 
  guides(colour=guide_legend(override.aes=list(colour='black'), order=2))
覆盖
剪切
,但不覆盖
颜色
,无论
顺序
的值如何(或即使省略)


我错过了什么

你已经非常接近了!这里的帮助只是将
guides()
中的参数名称更改为您试图更改的功能的名称,即
线型

g + guides(linetype = guide_legend(title = "Variable: cut",  # changes the second legend
                                   override.aes = list(colour = "black")), 
           color = guide_legend(title = "Variable: color"))  # changes the first legend

d'oh!那很好。虽然我觉得逻辑有点模糊。无论如何,这似乎只会影响第一个图例:与
g+scale\u color\u grey()+guides(color=guide\u legend(override.aes=list(linetype='虚线'))
相比,我不完全确定您在这里的意思(我不是母语人士),但我想您是对的:每个带有图例的功能在
guides()中都有自己的参数。是的,这个表达似乎有点长,因为它带来了少量的变化。我想我想知道访问第二、第三个元素的更一般的策略是什么。。。传说是。例如,您将如何更改
cut
的标题?也许这需要一个单独的问题?在这种特殊情况下,它不会以同样的方式工作吗
cut
是变量的名称,但所讨论的功能是
linetype
-
g+导向(linetype=guide\u图例(title=“new title”,override.aes=list(color='black'))
。还是我误解了?包
grid
gridExtra
和其他包可以帮助更改核心级别的
ggplot2
绘图(但我不确定您是否需要此绘图)。如果您认为它回答了您的问题,请随意接受我的帖子。
g + guides(linetype = guide_legend(title = "Variable: cut",  # changes the second legend
                                   override.aes = list(colour = "black")), 
           color = guide_legend(title = "Variable: color"))  # changes the first legend