我想使用ggplot2包并排放置两个图,即相当于par(mfrow=c(1,2)).
例如,我希望以下两个图表以相同的比例并排显示.
x <- rnorm(100)
eps <- rnorm(100,0,.2)
qplot(x,3*x+eps)
qplot(x,2*x+eps)
Run Code Online (Sandbox Code Playgroud)
我需要将它们放在相同的data.frame中吗?
qplot(displ, hwy, data=mpg, facets = . ~ year) + geom_smooth()
Run Code Online (Sandbox Code Playgroud) 如何根据另一个列表中的条件(TRUE,FALSE)对列表进行子集化?请看下面的例子:
l <- list(a=c(1,2,3), b=c(4,5,6,5), c=c(3,4,5,6))
l
$a
[1] 1 2 3
$b
[1] 4 5 6 5
$c
[1] 3 4 5 6
cond <- lapply(l, function(x) length(x) > 3)
cond
$a
[1] FALSE
$b
[1] TRUE
$c
[1] TRUE
> l[cond]
Run Code Online (Sandbox Code Playgroud)
l [cond]出错:无效的下标类型'list'
我想从R获得带有RgoogleMaps的地图,具有特定的坐标边界.
我可以调用的是GetMap,并指定一个中心,我必须添加一个缩放级别.一切都很好,除了我没有得到一个与我选择的坐标有界的图像地图.
这是一个例子:
lat <- c(44.49,44.5)
lon <- c(11.33,11.36)
center = c(mean(lat), mean(lon))
zoom <- 14
mmap <- GetMap(center = center, zoom=zoom, maptype= "satellite", destfile = "m.png")
Run Code Online (Sandbox Code Playgroud)
问题是只有中心作为参数传递,因此我看到的整个图像取决于缩放级别.所以,我无法理解我得到的图像的边界是什么.我想要做的是使用我定义的坐标精确限制图像.这是可能的(还有其他地图包)吗?
我开始享受,dplyr但我被困在一个用例.我希望能够cumsum在包中的数据框中应用每个组,但我似乎无法做到正确.
对于演示数据帧,我生成了以下数据:
set.seed(123)
len = 10
dates = as.Date('2014-01-01') + 1:len
grp_a = data.frame(dates=dates, group='A', sales=rnorm(len))
grp_b = data.frame(dates=dates, group='B', sales=rnorm(len))
grp_c = data.frame(dates=dates, group='C', sales=rnorm(len))
df = rbind(grp_a, grp_b, grp_c)
Run Code Online (Sandbox Code Playgroud)
这会创建一个如下所示的数据框:
dates group sales
1 2014-01-02 A -0.56047565
2 2014-01-03 A -0.23017749
3 2014-01-04 A 1.55870831
4 2014-01-05 A 0.07050839
5 2014-01-06 A 0.12928774
6 2014-01-02 B 1.71506499
7 2014-01-03 B 0.46091621
8 2014-01-04 B -1.26506123
9 2014-01-05 B -0.68685285
10 2014-01-06 B -0.44566197
11 …Run Code Online (Sandbox Code Playgroud) 并不是说这对我的问题至关重要,但这是我的情节示例,我想在其上添加一个比例尺.
ggmap(get_map(location = "Kinston, NC", zoom = 12, maptype = 'hybrid')) +
geom_point(x = -77.61198, y = 35.227792, colour = "red", size = 5) +
geom_point(x = -77.57306, y = 35.30288, colour = "blue", size = 3) +
geom_point(x = -77.543, y = 35.196, colour = "blue", size = 3) +
geom_text(x = -77.575, y = 35.297, label = "CRONOS Data") +
geom_text(x = -77.54, y = 35.19, label = "NOAA") +
geom_text(x = -77.61, y = 35.22, label = …Run Code Online (Sandbox Code Playgroud) 我想请一些关于传单包的帮助.绘制交互式地图时,您可以执行此类操作.
library(leaflet)
library(magrittr)
m <- leaflet() %>%
setView(lng = -71.0589, lat = 42.3601, zoom = 8) %>%
addTiles()
m
Run Code Online (Sandbox Code Playgroud)
如果您想添加第三方磁贴,也可以这样做.以下链接提供第三方磁贴的选项(http://leaflet-extras.github.io/leaflet-providers/preview/index.html)创建以下图像OpenWeatherMap.Precipitation.
### They work
m %>% addProviderTiles("MtbMap")
m %>% addProviderTiles("HikeBike.HikeBike")
m %>% addProviderTiles("OpenWeatherMap.Precipitation")
Run Code Online (Sandbox Code Playgroud)
链接中的一些图块选项包括NASA的图块.我想用其中一个.所以我尝试了以下代码.不幸的是,他们都没有工作.
### The default map appears, then a black layer appears on top of the default layer.
m %>% addProviderTiles("NASAGIBS.ModisTerraTRUEColorCR")
m %>% addProviderTiles("NASAGIBS.ModisTerraBands367CR")
Run Code Online (Sandbox Code Playgroud)
唯一可行的选择如下.
m %>% addProviderTiles("NASAGIBS.ViirsEarthAtNight2012")
Run Code Online (Sandbox Code Playgroud)
我的下一次尝试是使用自定义URL模板addTiles().该URL来自上面的链接.但是,这也没有成功; 没有出现错误消息,但瓷砖没有变化.
m %>%addTiles(urlTemplate = "http://map1.vis.earthdata.nasa.gov/wmts-webmerc/MODIS_Terra_CorrectedReflectance_Bands367/default/{time}/{tilematrixset}{maxZoom}/{z}/{y}/{x}.{format}",
tileOptions(minZoom = 1, maxZoom = 8))
Run Code Online (Sandbox Code Playgroud)
我最后的尝试如下.这显示了默认地图,但是没有出现额外的图块.
leaflet() %>% …Run Code Online (Sandbox Code Playgroud) 我正在使用animationOptionsin 制作动画sliderInput().我想在滑块中使用日期/日期范围,但sliderInput()不接受日期.闪亮组中有一个帖子.截至2013年3月,还没有解决方案.所以我四处搜索并了解到可以使用JavaScript实现这一目标.这是帖子.不幸的是,我不能用JS写.所以,我搜索了更多,并想出了这个链接并编写了以下代码.这有效,但滑块上的数字令人困惑.这是一个可以移动并使用日期的唯一方法sliderInput()吗?非常感谢您抽出宝贵时间.
server.R
library(shiny)
shinyServer(function(input, output, session) {
observe({
updateDateInput(session, "ana", value = as.Date("2014-07-01") + input$foo)
})
output$preImage <- renderImage({
filename <- normalizePath(file.path('./www',
paste(input$ana, '.png', sep='')))
list(src = filename,
alt = paste("There is no image for ", input$ana, ".", sep = ""))
}, deleteFile = FALSE)
})
Run Code Online (Sandbox Code Playgroud)
ui.R
shinyUI(pageWithSidebar(
headerPanel("renderImage example"),
sidebarPanel(
sliderInput("foo", "Animation duration", min = -30,
max = 30, value = 0, step = …Run Code Online (Sandbox Code Playgroud) 我正在尝试在ggplot2中创建一个线图,它结合了一些变量的不同线型和其他变量的不同标记.
示例1使用不同的线型绘制每个变量,使用不同的标记绘制每个变量的示例2,以及使用不同的线和标记的示例3的图.
我试图用不同的线条样式(实线,虚线)绘制X2和X3,然后将X4和X5绘制成具有不同标记的实线(圆形,方形,等等).
有没有办法做到这一点?
library(ggplot2)
library(reshape2)
set.seed <- 1
df <- data.frame(cbind(seq(1,10,1),matrix(rnorm(100,1,20), 10, 4)))
d <- melt(df, id="X1")
# Example 1: different line styles
ggplot(d, aes(x=X1, y=value, color=variable)) +
geom_line(aes(linetype=variable), size=1)
# Example 2: different markers for each line
ggplot(d, aes(x=X1, y=value, color=variable)) +
geom_line() + geom_point(aes(shape=variable, size=4))
# Example 3: differnt line styles & different markers (You see this graph below)
ggplot(d, aes(x=X1, y=value, color=variable)) +
geom_line(aes(linetype=variable), size=1) +
geom_point(aes(shape=variable, size=4))
Run Code Online (Sandbox Code Playgroud)

我试图ggmap通过学校来看待教育成绩.我创建了所有学校的坐标列表和个别学生的分数如下:
score lat lon
3205 45 28.04096 -82.54980
8275 60 27.32163 -80.37673
4645 38 27.45734 -82.52599
8962 98 26.54113 -81.84399
9199 98 27.88948 -82.31770
340 53 26.36528 -81.79639
Run Code Online (Sandbox Code Playgroud)
我首先使用了我参与的大多数教程中的模式:http : //journal.r-project.org/archive/2013-1/kahle-wickham.pdf http://www.geo.ut.ee/ AASA/LOOM02331/heatmap_in_R.html
library(ggmap)
library(RColorBrewer)
MyMap <- get_map(location = "Orlando, FL",
source = "google", maptype = "roadmap", crop = FALSE, zoom = 7)
YlOrBr <- c("#FFFFD4", "#FED98E", "#FE9929", "#D95F0E", "#993404")
ggmap(MyMap) +
stat_density2d(data = s_rit, aes(x = lon, y = lat, fill = ..level.., alpha = ..level..), …Run Code Online (Sandbox Code Playgroud) 我们假设我使用ggmap包生成伦敦地图:
library(ggmap)
library(mapproj)
map <- get_map(location = "London", zoom = 11, maptype = "satellite")
p <- ggmap(map)+
theme(legend.position = "none")
print(p)
Run Code Online (Sandbox Code Playgroud)
现在我想在这个图中添加一个带有一些中心坐标的圆(比方说:lon = -0.1,lat = 52.23)和半径,例如以公里为单位.我尝试使用类似问题的解决方案(用ggplot2绘制一个圆圈),你可以在这里添加一个这样的语句:
p <- p + annotate("path",
x = xc+r*cos(seq(0,2*pi,length.out=100)),
y = yc+r*sin(seq(0,2*pi,length.out=100)))
Run Code Online (Sandbox Code Playgroud)
它有效,但由于规模不同,圆圈实际上不是圆形.是否可以正确绘制它?任何帮助,将不胜感激!
编辑:我找到了使用不同包的解决方案(https://gis.stackexchange.com/questions/119736/ggmap-create-circle-symbol-where-radius-represents-distance-miles-or-km),输出结果是正确.不过,如果有人知道如何使用ggmap,请分享它.
r ×10
ggplot2 ×7
ggmap ×4
google-maps ×2
conditional ×1
dplyr ×1
leaflet ×1
list ×1
rgooglemaps ×1
shiny ×1