Python Forum

Full Version: R-PYTHON INTEGRATION RELATED PROBLEM
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello all,
I am having problem while doing r-python integration and I want to return a rscript where a function is written namely map_plot() which will return a map,I just want the output in python. As,I am using rpy2 package for r-python integration but the problem is that I cannot see the map in python windows.I want to know how to do it in python through rpy2 package.

Python Code:
from rpy2.robjects import globalenv
import rpy2.robjects as robjects

r_source = robjects.r['source']
r_source('D:\Dash_Arnab\R_app\shapefile_r_python.R')
r_getname = robjects.globalenv['map_plot']
print(r_getname.r_repr())
But after writing this code,it is printing the whole r-script not returning the map.

Python Output:
function () 
{
    setwd("D:/Dash_Arnab/R_app")
    library(dplyr)
    library(rgdal)
    library(rgeos)
    library(maptools)
    library(raster)
    library(leaflet)
    crop_df <- read.csv("crop_data.csv")
    crop_df$productivity <- crop_df$Production/crop_df$Area
    crop_df$Season <- as.character(crop_df$Season)
    trim.trailing <- function(x) sub("\\s+$", "", x)
    crop_df$Season <- trim.trailing(crop_df$Season)
    india_dis <- shapefile("gadm36_IND_2")
    crop_df_req <- crop_df[(crop_df$Crop_Year == 2013 & crop_df$Crop == 
        "Rice" & crop_df$Season == "Kharif"), ]
    req_df_map <- crop_df_req[, c("State_Name", "District", "Production")]
    colnames(req_df_map)[1] <- "State"
    d1 <- india_dis@data
    india_dist <- data.frame(cbind(d1$NAME_1, d1$NAME_2, d1$GID_2))
    colnames(india_dist) <- c("State", "District", "Code")
    india_dist1 <- india_dist
    new_data_map <- full_join(india_dist1, req_df_map, by = c(State = "State", 
        District = "District"))
    new_data_map <- new_data_map[!is.na(new_data_map$Code), ]
    india_dist <- data.frame(cbind(d1$NAME_1, d1$NAME_2, d1$GID_2, 
        new_data_map$Production))
    colnames(india_dist) <- c("State", "District", "Code", "Production")
    map_data <- india_dist
    map_data$Production <- as.character(map_data$Production)
    map_data$Production <- as.numeric(map_data$Production)
    bins <- c(min(map_data$Production, na.rm = TRUE), quantile(map_data$Production, 
        0.25, na.rm = TRUE), median(map_data$Production, na.rm = TRUE), 
        quantile(map_data$Production, 0.75, na.rm = TRUE), max(map_data$Production, 
            na.rm = TRUE))
    new_pal <- colorBin(palette = "YlGnBu", domain = map_data$Production, 
        bins = bins)
    my_map <- leaflet(options = leafletOptions(zoomControl = FALSE)) %>% 
        addProviderTiles("MapBox", options = providerTileOptions(id = "mapbox.dark", 
            accessToken = Sys.getenv("MAPBOX_ACCESS_TOKEN"))) %>% 
        addPolygons(color = "#444444", data = india_dis, weight = 2, 
            fillColor = ~new_pal(map_data$Production), fillOpacity = 1, 
            label = map_data$District, highlightOptions = highlightOptions(color = "red", 
                weight = 3, bringToFront = TRUE), layerId = map_data$GID_2) %>% 
        addLegend(pal = new_pal, values = round(map_data$Production, 
            0), opacity = 0.7, position = "bottomright")
    return(my_map)
}
But I want the map to be shown in python.


any help would be highly appreciated.

Thanks,

Arnab Basak