前言
?在母親節(jié)這天用R畫一朵這樣的花送給媽媽或許是一個(gè)不錯(cuò)的選擇栖榨。下面將介紹詳細(xì)步驟自沧。
花花
首先需要安裝這些包
- ggplot2
- tidyverse
- mvtnorm
?如果沒有坟奥,請(qǐng)先安裝
快速安裝
?確保已安裝好上述包之后,載入包
library(ggplot2)
library(tidyverse)
library(mvtnorm)
畫出花的莖
p <- ggplot() +
coord_equal(1, c(-4, 2), c(-7, 3)) +
geom_curve(aes(x = -1, y = -7, xend = 0, yend = 0),
ncp = 1000, curvature = -0.3, size = 1,
color = "olivedrab3")
p #查看
花的莖
畫出花的葉子
#定義畫葉子需要的函數(shù)
geom_leaf <- function(x, xend, f, xoffset = 0, yoffset = 0,
xflip = 1, yflip = 1, ...) {
.x <- seq(x, xend, length.out = 100)
.y <- f(.x)
df <- tibble(x = c(.x, .y), y = c(.y, .x))
df$x <- xflip * df$x + xoffset
df$y <- yflip * df$y + yoffset
geom_polygon(aes(x = x, y = y), data = df, ...)
}
#畫出葉子
p <- p +
geom_leaf(0, 2, f, -1.6, -4.5, 1,
fill = "olivedrab3", color = "palegreen") +
geom_leaf(0, 2, f, -1.6, -5, -1,
fill = "olivedrab3", color = "palegreen")
#查看效果
p
加上葉子之后
畫出花瓣
#依舊先定義好函數(shù)
f <- function(x) x^2 / 2
geom_rose <- function(n, mean = c(0, 0), ...) {
.x <- mvtnorm::rmvnorm(n, mean)
df <- tibble(x = .x[, 1], y = .x[, 2])
list(
stat_density_2d(
aes(x = x, y = y, fill = stat(level)), data = df,
geom = "polygon", show.legend = FALSE, color = "grey80"),
scale_fill_gradient2(...)
)
}
#最后一步拇厢,畫出完整的圖像
p +
geom_rose(1000, mean = c(0, 0),
low = "red", mid = "purple", high = "pink",
midpoint = 0.075) +
theme_void()
成圖
?如果學(xué)到了爱谁,就趕緊行動(dòng)吧!