在 ggplot2 中更改图例标题时出现幽灵图例?
ghost legend appearing when changing legend title in ggplot2?
我已经尝试了好几个小时来调整 ggplot2
线图中的图例标题,但当我这样做时,我得到一个 'ghost legend' 出现在真实图例下方。我正在使用以下代码来调整部分图例(颜色、线型和符号的顺序):
scale_color_manual(values = c("#FF6600", "green4", "#0099FF")) +
scale_linetype_manual(values=c("solid", "solid", "solid")) +
scale_shape_manual(values = c(16, 16, 16)) +
这是一个与我的图表相匹配的可爱图例。但是,当我尝试使用此代码添加标题时:
labs(linetype='title')+
我在下面看到了另一个图例(因此它们同时出现在图上),标题正确,但 none 是以前的格式。显然我正在编写一个单独的图例,但我无法修复它!
此外,我想为我的图例赋予的真实标题需要 CO2 的下标“2”,我在其他标题中使用了以下内容来说明这一点:
expression(CO[2]~concentration~(ppm))
我想我会提一下,以防万一它改变了什么。
Aaaa,当我在做的时候,我还想将图例方向更改为水平而不是垂直列表,并将其移动到绘图的一角 space(已尝试 legend.position = c(0.9, 0.8)
以前有效但在这种情况下无效)。
我的问题是,当我尝试每件新事物时,错误会越来越多,我无法继续前进。
我意识到这 post 远非优雅,但我们将不胜感激任何帮助。抱歉,我没有提供任何示例代码,我是一个 R 新手并且完全游泳。
提前致谢!
您可能太新了,无法创建可重现的示例,所以这里有一个尝试和答案:
library(ggplot2)
set.seed(100)
df1 <- subset(diamonds, cut %in% (levels(diamonds$cut)[1:3]))[sample(100),]
p <- ggplot(df1, aes(x=carat, y=price, colour=cut, shape=cut, linetype=cut, group=cut))
p <- p + geom_line()
p + scale_color_manual(values = c("#FF6600", "green4", "#0099FF")) +
scale_linetype_manual(values=c("solid", "solid", "solid")) +
scale_shape_manual(values = c(16, 16, 16)) +
labs(linetype='title')
这是"ghost legend"吗?
这是一个解决方法。标题也应该放在其他美学:
p + scale_color_manual(values = c("#FF6600", "green4", "#0099FF")) +
scale_linetype_manual(values=c("solid", "solid", "solid")) +
scale_shape_manual(values = c(16, 16, 16)) +
labs(linetype=expression(CO[2]~concentration~(ppm)),
colour=expression(CO[2]~concentration~(ppm)),
shape=expression(CO[2]~concentration~(ppm)))
多余的图例消失了。发生这种情况是因为名称不同。我们重复了所有美学的名称。
一个较短的选择是将 guide="none"
添加到其他比例:
p + scale_color_manual(name=expression(CO[2]~concentration~(ppm)),
values = c("#FF6600", "green4", "#0099FF")) +
scale_linetype_manual(guide="none",values=c("solid", "solid", "solid")) +
scale_shape_manual(guide="none",values = c(16, 16, 16))
我已经尝试了好几个小时来调整 ggplot2
线图中的图例标题,但当我这样做时,我得到一个 'ghost legend' 出现在真实图例下方。我正在使用以下代码来调整部分图例(颜色、线型和符号的顺序):
scale_color_manual(values = c("#FF6600", "green4", "#0099FF")) +
scale_linetype_manual(values=c("solid", "solid", "solid")) +
scale_shape_manual(values = c(16, 16, 16)) +
这是一个与我的图表相匹配的可爱图例。但是,当我尝试使用此代码添加标题时:
labs(linetype='title')+
我在下面看到了另一个图例(因此它们同时出现在图上),标题正确,但 none 是以前的格式。显然我正在编写一个单独的图例,但我无法修复它!
此外,我想为我的图例赋予的真实标题需要 CO2 的下标“2”,我在其他标题中使用了以下内容来说明这一点:
expression(CO[2]~concentration~(ppm))
我想我会提一下,以防万一它改变了什么。
Aaaa,当我在做的时候,我还想将图例方向更改为水平而不是垂直列表,并将其移动到绘图的一角 space(已尝试 legend.position = c(0.9, 0.8)
以前有效但在这种情况下无效)。
我的问题是,当我尝试每件新事物时,错误会越来越多,我无法继续前进。
我意识到这 post 远非优雅,但我们将不胜感激任何帮助。抱歉,我没有提供任何示例代码,我是一个 R 新手并且完全游泳。
提前致谢!
您可能太新了,无法创建可重现的示例,所以这里有一个尝试和答案:
library(ggplot2)
set.seed(100)
df1 <- subset(diamonds, cut %in% (levels(diamonds$cut)[1:3]))[sample(100),]
p <- ggplot(df1, aes(x=carat, y=price, colour=cut, shape=cut, linetype=cut, group=cut))
p <- p + geom_line()
p + scale_color_manual(values = c("#FF6600", "green4", "#0099FF")) +
scale_linetype_manual(values=c("solid", "solid", "solid")) +
scale_shape_manual(values = c(16, 16, 16)) +
labs(linetype='title')
这是"ghost legend"吗?
这是一个解决方法。标题也应该放在其他美学:
p + scale_color_manual(values = c("#FF6600", "green4", "#0099FF")) +
scale_linetype_manual(values=c("solid", "solid", "solid")) +
scale_shape_manual(values = c(16, 16, 16)) +
labs(linetype=expression(CO[2]~concentration~(ppm)),
colour=expression(CO[2]~concentration~(ppm)),
shape=expression(CO[2]~concentration~(ppm)))
多余的图例消失了。发生这种情况是因为名称不同。我们重复了所有美学的名称。
一个较短的选择是将 guide="none"
添加到其他比例:
p + scale_color_manual(name=expression(CO[2]~concentration~(ppm)),
values = c("#FF6600", "green4", "#0099FF")) +
scale_linetype_manual(guide="none",values=c("solid", "solid", "solid")) +
scale_shape_manual(guide="none",values = c(16, 16, 16))