我认为在一个闪亮的应用程序中使用plotGoogleMaps来动态分析和显示使用R的空间数据真的很酷.我之前从未使用过任何一个包(它们相对较新)并且没有太多的编程经验,所以我开始每个教程和示例,然后尝试将它们混合在一起.
我可以使用所有单独的代码元素,但运行应用程序不会显示谷歌地图.我猜它与plotGoogleMaps有关,试图在浏览器中绘图,并且试图在浏览器中渲染绘图,但我不知道如何解决这个问题.我从闪亮的教程输入和输出中删除了大部分闪亮的代码,然后按照plotGoogleMaps教程
测试代码:
#load packages and data
library(shiny)
library(plotGoogleMaps)
data(meuse)
#convert data frame to SpatialPointDataFrame and set
coordinates(meuse)<-~x+y
proj4string(meuse) <- CRS('+init=epsg:28992')
#will need to select column name for app, maybe not best way to do this,
#but seems to work
formulaText<-paste('zinc')
#plot data on Google map, opens browser and works
mpgPlot <- plotGoogleMaps(meuse, zcol=formulaText)
Run Code Online (Sandbox Code Playgroud)
ui.R
library(shiny)
# Define UI for meuse test
shinyUI(pageWithSidebar(
# Application title
headerPanel("Meuse Test"),
# Sidebar with controls to select the …Run Code Online (Sandbox Code Playgroud) 当填充也用于 ggplot2 的美学时,有没有办法控制颜色图例的填充?
前任。
dat<-data.frame(id=as.character(1:4), var1=rep(LETTERS[1:2], 2), var2=rep(LETTERS[3:4], 2))
dat
library(ggplot2)
ggplot(dat)+
geom_bar(aes(id, color=var1, fill=var2))+
scale_color_manual(values=c("A"="black", "B"="grey"))+
theme_light()
Run Code Online (Sandbox Code Playgroud)
在这个图例中,很难看到颜色图例中深灰色填充周围的浅灰色边框。我承认指定颜色并在同一个图中填充可能不是一个好习惯,因为很难理解哪种颜色意味着什么,并且填充对象周围的彩色边框很难区分,但我该怎么做如果我想?
通过在图中手动指定填充,可以在未指定填充时控制图例中的填充颜色。
ggplot(dat)+
geom_bar(aes(id, color=var1), fill="white")+
theme_light()
Run Code Online (Sandbox Code Playgroud)
我认为有一种方法可以使用主题中的参数来控制它,但是可以theme(legend.background=element_rect())控制整个图例的背景(这是正确的)
ggplot(dat)+
geom_bar(aes(id, color=var1, fill=var2))+
scale_color_manual(values=c("A"="black", "B"="grey"))+
theme_light()+
theme(legend.background = element_rect(fill="blue"))
Run Code Online (Sandbox Code Playgroud)
同样在主题中,theme(legend.key = element_rect(fill="blue"))仅var2在图例中的框周围添加一条细蓝线,legend.box控制多个图例的排列(“水平”或“垂直”),并theme(legend.box.background = element_rect(fill="blue"))为图例var1和var2图例之间的背景着色。
我认为图例可能使用 NA 的默认值进行填充,所以我尝试使用手动指定它 scale_color_discrete()
ggplot(dat)+
geom_bar(aes(id, color=var1, fill=var2))+
scale_color_manual(values=c("A"="black", "B"="grey",
na.translate=TRUE, na.value = "white"))+
theme_light()
Run Code Online (Sandbox Code Playgroud)
看起来和第一个情节一样。
这似乎应该由theme()or 中的参数控制scale_color_manual,但我似乎无法弄清楚。
干杯