小编Jak*_*e L的帖子

在r中的形状内创建随机点

我正在尝试模拟一个项目的一些数据,基本上我需要绘制一个不规则的椭圆形形状,然后在该形状内制作一堆随机点,而我完全不知道如何做到这一点。

现在,我已经制作了一个样条形状,然后在其上绘制了一堆点。有什么办法可以找到重叠部分吗?或者更好的是,只是在预制形状的边界内生成随机点?

(如果有更好的开始方式,请随意放弃我的代码 - 也许它需要是某种空间对象?)

set.seed(2)
shape <- data.frame(
  x     = c(2, 3, 2, 3, 2, 1, 0, 1),
  y     = c(1, 3, 5, 7, 9, 7, 5, 3 )
)

scatter = data.frame(
  x = rnorm(100, mean = 1.5, sd = .6),
  y = rnorm(100, mean = 5, sd = 2)
)


ggplot(data = shape, 
       aes(x=x,y=y)) +
  ggforce::geom_bspline_closed(fill = "transparent", color = "black") +
  geom_point(color = "blue") +
  coord_equal() +  
  geom_point(data = scatter, shape = "*", size=3)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

random simulation r spatial

9
推荐指数
1
解决办法
3434
查看次数

在 ggplot 中过滤管道 df

我正在使用 dplyr 管道来清理我的 df,然后直接输入到 ggplot 中。但是,我只想一次只绘制一组,因此我需要过滤到该组。问题是,我希望比例保持不变,就好像所有群体都存在一样。是否可以在 ggplot() 命令中进一步过滤管道 df?例如下面。

# create df
set.seed(1)
df <- data.frame(matrix(nrow=100,ncol=5)) 
colnames(df) <- c("year","group","var1","var2","var3") 
df$year <- rep(1:4,each=25)
df$group <- rep(c("a","b","c","d","e"),times=20)
df$var1 <- runif(100,min=0,max=30)
df$var2 <- sample(1:500,100,replace=T) 
df$var2[1:25] <- sample(1:100,25,replace = T)
df$var3 <- runif(100,min=0,max=100)
Run Code Online (Sandbox Code Playgroud)

现在通过管道来清理它(这里我们只是对其进行一些随机的操作),然后绘制:

df %>%
  filter(var3 < 80) %>%   # random thing 1 - filter some stuff
  filter(var2 < 400) %>%   # random thing 2 - filter more
  mutate(var2 = as.numeric(var2)) %>%  # random thing 3 - mutate a column
  ggplot(aes(x=group,y=var1,color=var2)) + 
  geom_point() …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 dplyr

4
推荐指数
1
解决办法
1383
查看次数

RStudio 图形设备对于 Mac 上的空间对象来说非常慢

我最近买了一台新的 MacBook Pro,但遇到了一些与 R 图形相关的问题。在绘制 sf 对象时,R 的运行速度非常慢。我发现这个问题已有几年历史了(此处: https: //github.com/rstudio/rstudio/issues/3866),但从未提出任何解决方案。作为参考,RStudioGD绘制对象的速度比它慢 300 倍以上pdf,这让我抓狂。从上面的链接分享可重现的示例(尽管系统时间数字是我的):

<<================= 从上面的链接复制:========================== =>>

我想绘制此处找到的缅甸形状文件:

https://gadm.org/download_country_v3.html

library(rgdal)
library(sp)
tdir = tempdir()

get_poly = function() {
  tmp = tempfile(tmpdir = tdir)
  download.file(
    'https://biogeo.ucdavis.edu/data/gadm3.6/shp/gadm36_MMR_shp.zip',
    tmp
  )
  
  unzip(tmp, exdir = tdir)
  
  readOGR(tdir, 'gadm36_MMR_0', stringsAsFactors = FALSE)
}
Run Code Online (Sandbox Code Playgroud)

使用 RStudioGD 绘制此图比绘制 pdf 慢得多:

mmr = get_poly()
system.time(plot(mmr))
#    user  system elapsed 
# 128.162   0.510 129.271 
unlink(tdir, recursive = TRUE)
Run Code Online (Sandbox Code Playgroud)

重新启动 R 以清除缓存/开销并再次运行:

mmr = get_poly()
tpdf = tempfile(tmpdir …
Run Code Online (Sandbox Code Playgroud)

graphics r spatial rgeo r-sf

3
推荐指数
1
解决办法
1223
查看次数

标签 统计

r ×3

spatial ×2

dplyr ×1

ggplot2 ×1

graphics ×1

r-sf ×1

random ×1

rgeo ×1

simulation ×1