- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 4770 个
- 通用积分
- 3737.0293
- 学术水平
- 167 点
- 热心指数
- 195 点
- 信用等级
- 163 点
- 经验
- 54405 点
- 帖子
- 593
- 精华
- 0
- 在线时间
- 721 小时
- 注册时间
- 2008-4-15
- 最后登录
- 2026-1-5
|
图一的数据我参考的是这个 https://spaces.ac.cn/archives/3120 完全模仿可能还需要调整,大致的话,我搜了一下,用metR的geom_streamline可以吧 - library(ggplot2)
- library(metR)
- x0 <- c(0,0,1/.002, 375)
- y0 <- c(0,1/.003,0,250)
- a <- .1; b <- .002; c <- .0001; d <- .3; e <- .003; f <- .0002;
- x <- seq(-100, 601, by = 5)
- y <- seq(-100, 501, by = 5)
- mx <- t(matrix(rep(x, length(y)), nrow = length(x)))
- my <- t(matrix(rep(y, length(x)), nrow = length(x), byrow = TRUE))
- s <- a*(1-b*mx)*mx-c*my*mx
- t <- d*(1-e*my)*my-f*mx*my
- r <- sqrt(s^2 + t^2)
- df <- data.frame(x = c(mx), y = c(my), s = c(s), t = c(t), r = c(r))
- pts <- data.frame(x0, y0)
- g <- ggplot(df, aes(x,y)) + theme_bw() + xlab('x1') + ylab('x2') +
- theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) +
- geom_point(data = pts, aes(x0, y0), size = 3, colour = 'darkgreen') +
- geom_hline(yintercept = c(0, 250, 1/.003), linetype = 'dashed', size = 1.25, alpha = .5, colour = 'darkblue') +
- geom_vline(xintercept = c(0, 375, 500), linetype = 'dashed', size = 1.25, alpha = .5, colour = 'darkblue') +
- geom_streamline(aes(dx = s, dy = t), L = 100, skip = 3, colour = 'red', alpha = .5)
复制代码颜色的地方我没仔细看,可以参考这里看看能不能映射。 https://semba-blog.netlify.app/03/20/2019/plotting-streamlines-of-surface-current-with-ggplot2-and-metr-package/
|
-
总评分: 论坛币 + 30
学术水平 + 3
热心指数 + 3
信用等级 + 3
查看全部评分
|