2017-06-29 54 views
0

我寫我的第一個閃亮的應用程序試圖端口一個代碼繪製西班牙映射到一個閃亮的應用程序,任何人沒有R的知識,可以使用參數二進制運算符中閃亮。非數字使用ggplot

最近我想出了一個問題,當試圖改變函數返回的ggplot。

我會發布我的代碼的簡化版本。

予先在helper.R一個函數,從UI需要各種輸入並返回一個GG和一個數據幀:

graphing=function(datax,setter,selCCAA,varsel){ 
    map=readShapeSpatial('prov_map.shp') 
    [email protected]$CodProv=as.integer([email protected]$CodProv) 
    [email protected]=merge([email protected],datax,by.x='CodProv',by.y='CodProv',sort=F) 
    [email protected]$id=rownames([email protected]) 
    map.points=fortify(map,region='id') 
    map.df=join(map.points,[email protected],by='id') 
    map.df$Cd_CCAAint=as.integer(map.df$Cd_CCAA) 

if(varsel=="-"){return (NULL)} 
else { 
    if (setter==0){ 
    mapa=ggplot(map.df)+ 
     aes_string("long","lat",group="group",fill=varsel)+ 
     geom_polygon()+ 
     geom_path(color='white')+ 
     coord_equal() 
    return(list(mapa,map.df)) 
    } 
    else { 
    map.dfx<-subset(map.df,map.df$Cd_CCAAint==selCCAA) 
    mapa=ggplot(map.dfx)+ 
     aes_string("long","lat",group="group",fill=varsel)+ 
     geom_polygon()+ 
     geom_path(color='white')+ 
     coord_equal() 
    return(list(mapa,map.dfx)) 
    } 
} 
} 

然後,在server.R,我走GG由該函數返回,並添加更多的行它使用戶可以個性化的曲線圖的顏色,中點等

output$plot=renderPlot({ 

mapa=graphing(dataini,input$setter,input$selCCAA,input$varsel) 

grafico=mapa[[1]]+ 
    scale_fill_gradient2(low='#89D1F3',high='#006EC1')+ 
    theme(legend.position='bottom',axis.title.x=element_blank(), 
      axis.title.y=element_blank(),axis.ticks=element_blank(),axis.text=element_blank(), 
      panel.grid.minor=element_blank(),panel.grid.major=element_blank()) 

grafico 

}) 

當運行該應用程序包括線路scale_fill_gradient2或任何類型的幾何我得到以下錯誤:

Warning: Error in +: non-numeric argument to binary operator 

當我只包括主題時,不會出現錯誤。

截至目前,兩行已被列入圖形功能和應用已經完全*運行,但我需要他們在server.R所以如前所述的圖可以個性化。

*:表示應用程序的版本可以使用runGitHub( 「Mapas_BBVA_provincias」, 「IArchondo」)進行測試。任何對顯示西班牙文字符的幫助,如ui中的ñ,都會非常受歡迎。

回答

0

這就是你從

NULL + scale_fill_gradient2(low='#89D1F3',high='#006EC1') 

得到既然你的圖形函數的錯誤始於if(varsel=="-"){return (NULL)},我的猜測是,當varsel"-"創建此錯誤。嘗試沒有被選中時返回一個空ggplot對象,而不是。

if(varsel=="-"){return (ggplot())} 
+0

不能相信我沒有意識到這一點。非常感謝! – IArchondo