目录

  • 引言
  • 1、心型图初探
  • 1.1 带偏移的两个函数
  • 1.2 简单心型图
  • 2、改进的心型图
  • 3、动态画心型图(gif)
  • 4、ggplot2版本的心型图
  • 4.1数据
  • 4.2心型图初步
  • 4.3原件打包
  • 4.4画图
  • 5、总结


引言

再开始学习R语言基础画图得时候画过心型图,但是一直是静态得就把代码仍在角落里积灰了,今天拿出来用新的技术重写了一份。本文包含但不限于下面的函数包和技术:plot函数function方法的S3类、animation函数包、函数的闭包。如有没有讲解到得可自行百度学习。

本文用到的心型函数是:

R语言画图 lines函数 type r语言绘制函数图_R语言画图 lines函数 type


这是一个隐式表达式,为了方便编程,把他写为两个函数(注意这不是分段函数)。

R语言画图 lines函数 type r语言绘制函数图_动态图_02


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)

R语言画图 lines函数 type r语言绘制函数图_动态图_03


一个基本的图形就出来了,稍微修饰一下。改变颜色,线粗,画图区域、去掉坐标信息。

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)

R语言画图 lines函数 type r语言绘制函数图_R语言画图 lines函数 type_04

2、改进的心型图

这部分的改进主要是把图进行少量偏移做出立体感。

Plot()

R语言画图 lines函数 type r语言绘制函数图_R语言可视化_05

3、动态画心型图(gif)

这部分就是利用包animation把上述的图进行加标注然后做成gif图。
当然先是载入包,没有安装的自行安装一下。

library(animation)

然后就是把自己想说的话准备好,比如本文用的这句:今生愿我们成为彼此

R语言画图 lines函数 type r语言绘制函数图_R语言画图 lines函数 type_06


增加长宽,减少读秒再来一份。

R语言画图 lines函数 type r语言绘制函数图_心型图_07

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")

R语言画图 lines函数 type r语言绘制函数图_R语言可视化_08


填充颜色

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)

R语言画图 lines函数 type r语言绘制函数图_动态图_09


去掉主题标签

R语言画图 lines函数 type r语言绘制函数图_心型图_10

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

R语言画图 lines函数 type r语言绘制函数图_R语言画图 lines函数 type_11


最后再动起来。

R语言画图 lines函数 type r语言绘制函数图_R语言可视化_12

5、总结

最后希望可以帮助大家学习R语言。