【问题标题】:Change variable names into variable labels and remove legend title将变量名称更改为变量标签并删除图例标题
【发布时间】:2020-08-23 16:03:56
【问题描述】:

我创建了一个函数来生成 ggplot 等值线图,它可以工作 :) 但是,我想删除图例标题(见下图),因为它现在显示“I”。此外,我想将悬停文本更改为地图数据框中适应的变量标签。但是,当我将此数据文件与形状文件合并时,还将 MAPS 数据帧转换为 ggplot 的可读格式,变量标签在此过程中丢失。所以,我想维护变量标签,也想以某种方式将变量标签合并到我的函数代码中,所以我在我的 ggplotly 悬停文本中获得了 fill= 变量的变量标签。

在我的代码下面:

library(shiny)
library(shinydashboard)
library(ggplot2)
library(cbsodataR)
library(plotly)
library(sjlabelled)
library(expss)
library(tidyr)
library(tidyverse)
library(dplyr)
library(stringr)
library(rgdal)
library(plyr)

#Loading shapefile
ShapefileWijken <- readOGR("/Users/anne/Desktop/RondeVenen/ALGEMEEN_DATA/SHAPEFILES_DRV_6PC_5PC_Gemeente/WijkenEnBuurten/WijkenEnBuurten.shp")
#Opening data Dutch public database
Maps <- cbs_get_data("84583NED", 
                   select=c("AantalInwoners_5","HuishoudensTotaal_28", 
                              "Woningvoorraad_34", "GemiddeldInkomenPerInkomensontvanger_65", "Codering_3"))
#Merge data with shapefile
MAPS <- merge(ShapefileWijken, 
              Maps, 
              by.x = "BU_CODE", 
              by.y="Codering_3", 
              all=FALSE)
#Turn data into readable format for ggplot
MAPS@data$id <- rownames(MAPS@data)
TUSSEN <- fortify(MAPS, region="id")
CHOROPLETH <- merge(TUSSEN, MAPS@data, by="id")
library(plyr)
CHOROPLETH <- join(TUSSEN, MAPS@data, by="id")

###FUNCTION MAPS
ggplot_MAP <- function(i){
  ggplot(data = CHOROPLETH, aes(x=long, y=lat, group = group)) +
    geom_polygon(aes(fill=i), color="black")  +
    scale_fill_gradient(low="#99cc33", high="#009999") +
    theme_void() + 
    theme(panel.border = element_blank(), panel.grid.major = element_blank(),
          panel.grid.minor = element_blank(), axis.line.y=element_blank(), axis.line.x=element_blank(), 
          legend.title = element_blank())
}

#Adding gg plot choropleth map to shiny server 
output$MAPINWONERS <- renderPlotly({
    ggplotly(ggplot_MAP(CHOROPLETH$AantalInwoners_5)) %>% config(modeBarButtonsToRemove = c(
      'sendDataToCloud', 'autoScale2d', 'resetScale2d', 'toggleSpikelines',
      'hoverClosestCartesian', 'hoverCompareCartesian',
      'zoom2d','pan2d','select2d','lasso2d','zoomIn2d','zoomOut2d'
    ), displaylogo=FALSE) %>% layout(dragmode=FALSE) 

【问题讨论】:

  • 如果没有可重复的示例,很难帮助您。您能否提供您的ShapefileWijken 的样本。你可以用dput(ShapefileWijken)来做。
  • 嗨@GregoryDe​​min,当我在 R 中运行:dput(ShapefileWijken),输出非常长。我不能把它放在评论中,也不能把它放在主帖中。现在最好做什么?
  • 一般情况下,data.frames 之间的merge 会保留标签。但是ShapefileWijken 不是data.frame。是否可以在最后阶段将Maps 合并到CHOROPLETH data.frame?
  • 谢谢 Gregory,我会尝试这样做的 :)

标签: r ggplot2 label ggplotly


【解决方案1】:

您可以通过在 geom_polygon() 语句之后立即添加 labs(fill=NULL) 来删除图例标题。要获得所需的悬停文本,请在ggplotaes 内定义text=paste("Text1",var1,"\nText2",var2);这里 Text1 和 Text2 将是您想要的文本,而 var1 和 var2 将是您的变量标签。然后在ggplotly 中包含tooltip=c("text")

【讨论】:

    猜你喜欢
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2014-07-01
    相关资源
    最近更新 更多