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

我在这里和谷歌阅读了很多关于 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)

【问题讨论】:

    标签: r ggplot2 label legend legend-properties


    【解决方案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))
      

      【讨论】:

        最近更新 更多