如何理解哪个图例是哪个图例并在 R 的 ggplot 中删除其中一个?

Posted

技术标签:

【中文标题】如何理解哪个图例是哪个图例并在 R 的 ggplot 中删除其中一个?【英文标题】:How to understand which legend is which and remove one of them in ggplot in R? 【发布时间】:2020-02-28 14:28:50 【问题描述】:

我在这里和谷歌阅读了很多关于 ggplot 中的传说的问题。但是,我仍然不明白为什么下面的代码会产生 2 个不同的图例以及如何分别控制它们。

基本上我需要的是格式化左侧的文本,因为它会产生关于线型的正确视觉效果并删除右侧的文本。

如果您能帮助我并解释为什么后者甚至存在,为什么它会为线型产生错误的视觉效果,以及为什么它是我尝试格式化图例时唯一受到影响的视觉效果,我将非常感激。

附:在我尝试格式化图例之前,第二个甚至不存在。

如果还没有,则需要安装这些包。

install.packages(ggplot2)
install.packages(reshape2)
install.packages(scales)

现在是代码。

library(ggplot2)
library(reshape2)
library(scales)

data(economics)
dataset <- economics[, c("date", "psavert", "uempmed")]
dataset <- melt(dataset, id = "date")

ch <- ggplot(data=dataset, aes(x=date, y=value, group = variable ))+
  geom_line(aes(linetype=variable, color=variable))+
  scale_linetype_manual(values=c("solid", "longdash"))+
  scale_color_manual(values=c('#005493','#666666'), labels = c("Personal savings rate (%)", "Median 
duration of unemployment (weeks)"))+
  theme(legend.position="bottom" , plot.title = element_text(face = "bold", size = (14), colour = 
"#9E0010"),
    axis.title.y = element_text(size = (12), face = "italic"))+
  labs( title= "Pointless economic plot", y="Value", x=" ", colour= "Indicator")

print(ch)

【问题讨论】:

【参考方案1】:

似乎将,guide=FALSE 添加到您的scale_linetype_manual 即可完成此操作。

#install.packages(ggplot2)
library(ggplot2)
#install.packages(reshape2)
library(reshape2)
#install.packages(scales)
library(scales)
data(economics)
dataset <- economics[, c("date", "psavert", "uempmed")]
dataset <- melt(dataset, id = "date")

ch <- ggplot(data=dataset, aes(x=date, y=value, group = variable ))+
  geom_line(aes(linetype=variable, color=variable))+
  scale_linetype_manual(values=c("solid", "longdash"), guide = FALSE)+
  scale_color_manual(values=c('#005493','#666666'), labels = c("Personal savings rate (%)", "Median 
                                                               duration of unemployment (weeks)"))+
  theme(legend.position="bottom" , plot.title = element_text(face = "bold", size = (14), colour =   "#9E0010"),
        axis.title.y = element_text(size = (12), face = "italic"))+
  labs( title= "Pointless economic plot", y="Value", x=" ", colour= "Indicator") 


由reprex package (v0.3.0) 于 2019 年 11 月 2 日创建

【讨论】:

【参考方案2】:

这将删除颜色图例并将颜色添加到线型图例中。它还将图例标题更改为My title,使其变大并变红,并使图例文本变大、变蓝并加粗。

ch + 
  guides(color = FALSE, 
         linetype = guide_legend(
                      title = element_text("My title"), 
                      override.aes = list(color = c('#005493', '#666666')))) +
  theme(legend.text = element_text(color="blue", size = 16, face = "bold"),
        legend.title = element_text(color = "red", size = 16))

【讨论】:

以上是关于如何理解哪个图例是哪个图例并在 R 的 ggplot 中删除其中一个?的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中绘图:水平列出图例项并在绘图下方居中

将图例添加到由 ggplot 包装的饼图

使用 R 中的 Visreg 包更改图例位置

如何在 hline 中添加图例?

如何使用 R studio 为每个基因设置不同的颜色并在 ChromoMap 中添加图例?

如何在 Matlab 绘图图例中放置颜色条图标