R语言可视化——动态心型图

引言

再开始学习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语言。水平有限发现错误还望及时评论区指正,您的意见和批评是我不断前进的动力。当然如果有更好的改进方案欢迎评论区交流。
本文的代码已整理好,实在刚需移步下面链接下载研究。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页