查看原文
其他

中秋特刊 | R还可以绘图:八月十五招友玩“月”

简华 数据Seminar 2021-06-04



华阳观中八月十五日夜招友玩月

唐 · 白居易

人道秋中明月好,欲邀同赏意如何?

华阳洞里秋坛上,今夜清光此处多。


值此中秋佳节来临之际,数据Seminar全体成员,预祝大家中秋节快乐,生活、工作、学习,事事顺心!




本期特刊,我们用R绘制“中秋明月夜”图,招大家共同玩“月”

中秋明月夜

图 中秋明月夜 · 简华绘制

在Paul Murrell代码(点击阅读原文即可查看)基础上,经过不断调试和渲染,利用R中grid包,绘制“中秋明月夜”图(整体效果见上图),与大家共赏佳节,代码如下(复制代码运行即可):

##加载grid包library(grid)
##绘制夜空pushViewport(viewport(xscale=c(0, 1), yscale=c(0.2, 1), clip=TRUE))
res <- 50for (i in 1:res) grid.rect(y=1 - (i-1)/res, just="top", gp=gpar(col="grey30", fill=grey(0.8*i/res)))
##绘制中秋月moon <- function(x, y, size) { angle <- seq(0, 2*pi,length=180) x1 <-x+1.5*size*cos(angle) y1 <-y+1.5*size*sin(angle) mod<-0 x2 <- x+mod*(x1-x) grid.polygon(c(x1-0.065, rev(x2)), c(y1, rev(y1)), default.unit="native", gp=gpar(col=NULL, fill="yellow"))}
moon(.25, .85, 0.04)
##绘制星空star <- function(x, y, size) { x1 <- c(x, x + size*.1, x + size*.5, x + size*.1, x, x - size*.1, x - size*.5, x - size*.1) + .05 y1 <- c(y - size, y - size*.1, y, y + size*.1, y + size*.7, y + size*.1, y, y - size*.1) + .05 grid.polygon(x1, y1, default.unit="native", gp=gpar(col=NULL, fill="yellow"))}
star(.5, .7, .02)star(.8, .9, .02)star(.72, .74, .02)star(.62, .88, .02)star(.51,.80,.02)
grid.circle(runif(20, .2, 1), runif(20, .6, 1), r=.002, default.unit="native", gp=gpar(col=NULL, fill="yellow"))
##绘制山景hill <- function(height=0.1, col="grey30") { n <- 100 x <- seq(0, 1, length=n) y1 <- sin(runif(1) + x*2*pi) y2 <- sin(runif(1) + x*4*pi) y3 <- sin(runif(1) + x*8*pi) y <- 0.4 + height*((y1 + y2 + y3)/3) grid.polygon(c(x, rev(x)), c(y, rep(0, n)), default.unit="native", gp=gpar(col=NULL, fill=col))}
hill()
##添加文本rdir <- function(n) { sample(seq(-45, 45, length=10), n)/180*pi}
grid.text("Happy Mid-Autumn Festival!", x=.38, y=.84, just="bottom", default.unit="native", gp=gpar(col="yellow", fontsize=15))
grid.text("人道秋中明月好,欲邀同赏意如何?", x=.385, y=.8, just="bottom", default.unit="native", gp=gpar(col="yellow", fontsize=10))
grid.text("——白居易《华阳观中八月十五日夜招友玩月》", x=.5, y=.78, just="bottom", default.unit="native", gp=gpar(col="yellow", fontsize=8))
grid.text("数据Seminar", x=.9, y=.25, just="bottom", default.unit="native", gp=gpar(col="white", fontsize=15))
popViewport()
左右滑动查看更多






►往期推荐

回复【Python】👉简单有用易上手

回复【学术前沿】👉机器学习丨大数据

回复【数据资源】👉公开数据

回复【可视化】👉你心心念念的数据呈现

回复【老姚专栏】👉老姚趣谈值得一看


►一周热文

学术前沿 | 行政大数据的政策研究价值

特别推荐 | “正则表达式”在工业企业数据库匹配中的运用(一)

特别推荐丨老姚专栏:科学方法两则——证伪主义和溯因推理

数据呈现 | 用R绘制和弦图,解读大健康产业经济数据

工具&方法 | 4张卡片,Python命令大集合






数据Seminar

这里是大数据、分析技术与学术研究的三叉路口


作者:简华(何年华)审阅:杨奇明编辑:青酱






    欢迎扫描👇二维码添加关注    


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存