目录

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

R语言可视化——动态心型图相关推荐

  1. c语言实现动态心型代码

    //c语言动态心型的实现代码,帮助熟悉指针和程序: #include <stdio.h> #include <stdlib.h> void show( int m) {// c ...

  2. R语言可视化散点图、气泡图、动态气泡图、数据点重合的散点图、数据点计数图、抖动数据点图、基于lm方法或者loess方法拟合数据点之间的趋势关系曲线、自定义数据点的大小、色彩、添加主标题、副标题、题注

    R语言可视化散点图.气泡图.动态气泡图.数据点重合的散点图.数据点计数图.抖动数据点图.基于

  3. R语言可视化学习笔记之ggridges包绘制山峦图

    作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源. 严涛老师的绘图教程还有: gganimate |诺奖文章里面的动图绘制教程来了!! ggplot2学习笔记之 ...

  4. R语言可视化分面图、假设检验分组t检验、可视化单变量分组分面箱图(faceting bar plot)、添加误差条(error bar)、添加p值、添加抖动数据点(jitter points)

    R语言可视化分面图.假设检验分组t检验.可视化单变量分组分面箱图(faceting bar plot).添加误差条(error bar).添加p值.添加抖动数据点(jitter points) 目录

  5. R语言可视化斜率图、扩充图像纵横比为数据标签显示更整齐、ggrepel包来帮忙

    R语言可视化斜率图.扩充图像纵横比为数据标签显示更整齐.ggrepel包来帮忙 目录

  6. R语言可视化散点图(scatter plot)图、为图中的部分数据点添加标签、ggrepel包来帮忙

    R语言可视化散点图(scatter plot)图.为图中的部分数据点添加标签.ggrepel包来帮忙 目录

  7. R语言可视化:散点图、散点图和折线图(line charts)、3D散点图、旋转3D散点图、气泡图、corrgram包可视化相关性矩阵、马赛克图( Mosaic plots)、hexbin、密度图

    R语言可视化:散点图.散点图和折线图(line charts).3D散点图.旋转3D散点图.气泡图.corrgram包可视化相关性矩阵.马赛克图( Mosaic plots).hexbin.密度图 目 ...

  8. R语言可视化分面图、假设检验分组t检验、可视化单变量分组分面箱图(faceting boxplot)并添加p值(Make facet boxplot and add p-values)、添加抖动数据点

    R语言可视化分面图.假设检验分组t检验.可视化单变量分组分面箱图(faceting boxplot)并添加p值(Make facet boxplot and add p-values).添加抖动数据点 ...

  9. R语言可视化密度图并在密度图中嵌入图例信息、使用geomtextpath包的geom_textdensity函数,将图例(legend)信息嵌入到密度图中

    R语言可视化密度图并在密度图中嵌入图例信息.使用geomtextpath包的geom_textdensity函数,将图例(legend)信息嵌入到密度图中(Density plot with dire ...

最新文章

  1. 原价买了二手机,我是如何做到的?
  2. gm怎么刷东西 rust_刷了这种黑板漆再也不用担心吃粉笔灰了
  3. c++ STL find search
  4. netcore一键nssm发布为windows服务
  5. linux+虚拟机上的wdcp,linux虚拟主机服务器wdcp系统教程
  6. evoc服务器长鸣报警显示正常,研祥工业服务器出大事了!
  7. linux添加了一条静态路由,为Linux新增静态路由的方法
  8. ES 6理解 let
  9. C++和C语言的区别是什么?
  10. ViT (Vision Transformer) ---- Transformer Model(1)
  11. win10 开启蓝 由于其配置信息(注册表中的)不完整或已损坏
  12. 18.TCP/IP 详解卷1 --- TCP 连接的建立与终止
  13. 在JavaFX中使用JxBrowser-Using JxBrowser in JavaFX
  14. 算法复杂度描述中为什么用“logn”,而不用“log2n”、“lnn”或“lgn”
  15. A Re-evaluation of Temporal Knowledge Graph Completion Models under a Unified Framework
  16. java读取共享文件_局域网共享文件读写的实现方式
  17. 教你分割视频,用多个视频随机合并,添加音频
  18. OSS对象存储之阿里云和七牛云
  19. pip(Python包管理工具)安装第三方库教程
  20. excel的vlookup如果是#N/A就显示空白

热门文章

  1. 关于Linux下通过ping/mtr 长期监控网络输出日志报告的一些笔记
  2. Anaconda 安装错误的解决办法
  3. Pytorch深度学习实战教程:UNet语义分割网络
  4. 2015华为暑期实习面试全过程
  5. 不要再重复造轮子了,Hutool这款开源工具类库贼好使
  6. ctab法提取dna流程图_CTAB法提取植物DNA.ppt
  7. CANFiber是什么?
  8. 计算机网络的一些知识点
  9. Class Activation Mapping(CAM)介绍
  10. Python tkinter 学习笔记(2)-- 控件、组件(二)