【问题标题】:ggplot legend labels and colorsggplot 图例标签和颜色
【发布时间】:2018-03-25 14:52:57
【问题描述】:

我正在努力使用 ggplot 来制作这个人物的传说。现在,我只为一张地图做,当它工作时,我会在同一个情节中生成四张地图。
我想要一个像这样的图例:底部、中心和比例尺上方的标题、标签和颜色,并省略 NA 值。

这是我的代码:

读取 shapefile 并安装新变量

map_ev@data$id = rownames(map_ev@data)  
map_ev.points = fortify(map_ev, region="id")  
map_ev.df = join(map_ev.points, map_ev@data, by="id")  
map_ev.df$median_norm = map_ev.df$median / map_ev.df$VOM

带有主题的向量选择 ggplot

theme_opts <- list(theme(panel.grid.minor = element_blank(),  
                         panel.grid.major = element_blank(),  
                         panel.background = element_blank(),  
                         panel.border = element_blank(),  
                         axis.line = element_blank(),  
                         axis.text.x = element_blank(),  
                         axis.text.y = element_blank(),  
                         axis.ticks = element_blank(),  
                         axis.title.x = element_blank(),  
                         axis.title.y = element_blank(),  
                         plot.title = element_text(size=12, hjust=0.5),   
                         legend.position = "bottom",   
                         legend.title=element_blank()))  

安装变量中断

map_ev.df$median_norm <- cut(map_ev.df$median_norm, breaks=c(-200, -100, -50, -20, -5, 0, 5, 20, 50, 100, +200))

检查休息时间

levels(map_ev.df$median_norm)

要使用的颜色

color_map <- palette(c("#5b2e07", "#904d07", "#b98436", "#dfc27e", "#f6e8c3", 
                       "#c9e9e4", "#84cdc4", "#3c958f", "#01675a", "#073a31"))

ggplot代码

ggplot(map_ev.df) +   
  aes(long,lat,group=group,fill=median_norm, color=median_norm) +  
  geom_polygon() + geom_path(color="black") +   
  labs(title="Equivalent variation") + coord_equal() +   
  theme_opts

现在我得到这个数字:

谢谢大家,感谢您的帮助!

【问题讨论】:

    标签: r ggplot2 colors legend


    【解决方案1】:

    我刚刚注意到您需要手动填充颜色。您可以使用:

    myscale <- c("(-1,10]"="#BBDF27", "(10,20]"="#43BF71", "(20,30]"="#21908C", "(30,50]"="#35608D", "(50,101]"="#482576", "(101,300]"="#ffeeed")
    

    结合:

    scale_fill_manual(values=myscale,na.value="#e0e0e0",name="",labels=c("<10","10 - 20","20 - 30","30 - 50", ">50","Estimate", "NA")) 
    

    scale_fill manual 在另一个答案中替换 scale_fill_brewer

    只需将颜色和标签值替换为您自己的值。当您绘制没有任何标签的地图时,会显示需要进入myscale 的值。祝你好运!

    【讨论】:

      【解决方案2】:

      您没有标题的原因是因为您从未指定过,如果您指定了,您将通过在theme 中写入legend.title=element_blank() 再次删除它。相反,我重写了它以指定标题应该居中。使用guides(colour = guide_legend(title.position = "top"),fill = guide_legend(title.position = "top",nrow=1,byrow=TRUE)) 我将位置设置为“顶部”并确保它只是一排图例项。 (我把colour=留在这里以防你需要它)。

      您似乎还想要黑色边框,这意味着我删除了所有colour=,因为它指定了边框的颜色。

      我添加了scale_fill_brewer,还有更多可用的调色板。在此您可以指定您的图例标题和图例标签的外观。顺便说一下,每次更改输入数据时都需要手动调整这些。

      我不知道如何删除NA 的图例项,抱歉。

      这是我想出的全部代码:

      ggplot(map_ev.df) +   
        aes(long,lat,group=group,fill=median_norm) + 
        scale_fill_brewer(palette="BrBG",name= "Title of legend",labels=c("-200 - -100","-100 - 50","-5 - 0","0 - 5", "label for NA"))+
        geom_polygon() + geom_path(color="black") +   
        labs(title="Equivalent variation") + coord_equal() +   
        theme(panel.grid.minor = element_blank(),  
              panel.grid.major = element_blank(),  
              panel.background = element_blank(),  
              panel.border = element_blank(),  
              axis.line = element_blank(),  
              axis.text.x = element_blank(),  
              axis.text.y = element_blank(),  
              axis.ticks = element_blank(),  
              axis.title.x = element_blank(),  
              axis.title.y = element_blank(),  
              plot.title = element_text(size=12, hjust=0.5),   
              legend.position = "bottom",
              legend.direction = "horizontal",
              legend.title = element_text(hjust=0.5))+
        guides(colour = guide_legend(title.position = "top"),fill = guide_legend(title.position = "top",nrow=1,byrow=TRUE))
      

      使用我自己的一些数据进行填充: map

      【讨论】:

        猜你喜欢
        • 2017-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-02
        • 2022-06-22
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        相关资源
        最近更新 更多