Измените имена переменных на метки переменных и удалите заголовок легенды - PullRequest
0 голосов
/ 08 мая 2020

Я создал функцию для создания карт картограмм ggplot, и она работает :) Тем не менее, я хотел бы удалить заголовок легенды (см. Рисунок ниже), поскольку теперь он говорит «I». Кроме того, я хотел бы изменить текст при наведении на метки переменных, как это было адаптировано в фрейме данных Карт. Однако, когда я объединяю этот файл данных с файлом формы, а также превращаю фрейм данных MAPS в читаемый формат для ggplot, метки переменных теряются в процессе. Итак, я хотел бы сохранить метки переменных, а также хочу каким-то образом включить метки переменных в свой код функции, поэтому я получаю метку переменной для переменной fill = в моем наведенном тексте ggplotly.

Ниже моего кода:

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) 

Example ggplot map

1 Ответ

0 голосов
/ 20 июня 2020

Вы можете удалить заголовок легенды, добавив labs(fill=NULL) сразу после оператора geom_polygon(). Чтобы получить желаемый текст при наведении курсора, определите text=paste("Text1",var1,"\nText2",var2) внутри aes из ggplot; здесь Text1 и Text2 будут вашим желаемым текстом, а var1 и var2 будут вашими метками переменных. Затем включите tooltip=c("text") в ggplotly.

...