目录
- 引言
- 1、心型图初探
- 1.1 带偏移的两个函数
- 1.2 简单心型图
- 2、改进的心型图
- 3、动态画心型图(gif)
- 4、ggplot2版本的心型图
- 4.1数据
- 4.2心型图初步
- 4.3原件打包
- 4.4画图
- 5、总结
引言
再开始学习R语言基础画图得时候画过心型图
,但是一直是静态得就把代码仍在角落里积灰了,今天拿出来用新的技术重写了一份。本文包含但不限于下面的函数包和技术:plot函数function方法的S3类、animation函数包、函数的闭包
。如有没有讲解到得可自行百度学习。
本文用到的心型函数是:
这是一个隐式表达式,为了方便编程,把他写为两个函数(注意这不是分段函数)。
1、心型图初探
1.1 带偏移的两个函数
首先是做出需要的函数:
fun <- function(up = T, d = 0){
function(x){
fun1 <- function(x, d){
k <- (1-x^2)^(1/2)+abs(x)^(2/3)
k + d
}
fun2 <- function(x, d){
k <- -(1-x^2)^(1/2)+abs(x)^(2/3)
k + d
}
if(up) return(fun1(x, d = d))
return(fun2(x, d = d))
}
}
参数说明:
– 输入参数:up = T:心型图的上部
– up = F:心型图的下部
– d:y轴的偏移量 从-inf到inf取值
– 输出参数:
– 不同的曲线函数
1.2 简单心型图
plot(fun(T, d = i/30), -1, 1, lwd = 1, xlim = c(-1,1), ylim = c(-1,3))
plot(fun(F, d = i/30), -1, 1, add = T, lwd = 1)
一个基本的图形就出来了,稍微修饰一下。改变颜色,线粗,画图区域、去掉坐标信息。
plot(fun(T, d = i/30), -1, 1, col = "red", lwd = 3,
xlim = c(-1.1,1.1), ylim = c(-0.5,2.5), xlab = "", ylab = "", axes = F)
plot(fun(F, d = i/30), -1, 1, add = T, col = "red", lwd = 3)
2、改进的心型图
这部分的改进主要是把图进行少量偏移做出立体感。
Plot()
3、动态画心型图(gif)
这部分就是利用包animation
把上述的图进行加标注然后做成gif图。
当然先是载入包,没有安装的自行安装一下。
library(animation)
然后就是把自己想说的话准备好,比如本文用的这句:今生愿我们成为彼此
。
增加长宽,减少读秒再来一份。
4、ggplot2版本的心型图
4.1数据
先是构造函数生成数据,因为不知道ggplot2直接画曲线的包,需要提前自己生成数据。
Fun <-function(x)
{
y1 <- (1-x^2)^(1/2)+abs(x)^(2/3)
y2 <- -(1-x^2)^(1/2)+abs(x)^(2/3)
data <- data.frame(x = x,y1 = y1, y2 = y2)
return(data)
}
4.2心型图初步
ggplot(data = da) +
geom_line(aes(x, y1), color="red") +
geom_line(aes(x, y2), color="red")
填充颜色
ggplot(data = da) +
geom_line(aes(x, y1), color="red") +
geom_line(aes(x, y2), color="red") +
geom_polygon(aes(x = x, y = y2, fill = 'red'), show.legend = F) +
geom_polygon(aes(x = x, y = y1, fill = 'red'), show.legend = F)
去掉主题标签
4.3原件打包
# 默认主题
TH <- list(theme_bw(),
scale_x_continuous(labels = NULL),
scale_y_continuous(labels = NULL),
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank())
)
4.4画图
ggplot(data = da) + L + TH + cl
最后再动起来。
5、总结
最后希望可以帮助大家学习R语言。