用ggplot轻松搞定太极图

ggplot的图层语法给了使用者无限种可能,再配合上自己对于数据操纵的灵活把控,真的不知道ggplot可以给我们呈现出什么的惊艳作品。

这不,清明假期无聊的我,用ggplot搞定了太极阴阳图。

library("ggplot2") library(Cairo) library(ggmap)

本文太极图的构造理念相当简单,取笛卡尔坐标系的0点为圆心,其他 所有元素都是围绕零点圆心的坐标构成。

  • 该图涉及到一个大圆环;
  • 两个大半圆面积图(太极的上下黑白部分);
  • 两个小半圆面积图(太极的左右次半圆);
  • 以及阴阳鱼的黑白小圆(这里没有构造数据而是通过实心圆点来表示的)。

以下是数据构造过程:

bigcirclex<-seq(from=-1000,to=1000,length=10000) bigcirclex<-c(bigcirclex,rev(bigcirclex)) 太极图X轴横坐标

bigcircley<-c(sqrt(1000000-bigcirclex^2),-sqrt(1000000-bigcirclex^2)) #Y轴纵坐标 这里的

upcirclex<-bigcirclex[1:10000] upcircley<-bigcircley[1:10000] downcirclex<-bigcirclex[1:10000] downcircley<--bigcircley[1:10000] 上下次半圆的横纵坐标

左右小圆的横纵坐标 leftcirlex<-seq(from=-1000,to=0,length=1000) leftcirley<-sqrt(250000-(leftcirlex+500)^2) rightcirclex<-seq(from=0,to=1000,length=1000) rightcircley<-sqrt(250000-(rightcirclex-500)^2)

作图函数:

setwd("F:/数据可视化/R/R语言学习笔记/可视化/ggplot2/商务图表") CairoPNG(file="taiji.png",width=1000,height=1000) ggplot(data=NULL)+ geom_area(aes(upcirclex,upcircley),fill="white",col=NA)+ geom_area(aes(downcirclex,downcircley),fill="black",col=NA)+ geom_area(aes(leftcirlex,-leftcirley),fill="white",col=NA)+ geom_area(aes(rightcirclex,rightcircley),fill="black",col=NA)+ coord_flip()+ annotate("text",x=-500,y=0,label="●", color= "black", size=80)+ annotate("text",x=500,y=0,label="●", color= "white", size=80)+ geom_path(aes(bigcirclex,bigcircley),col="grey60")+ theme_nothing() dev.off()

原文发布于微信公众号 - 数据小魔方(datamofang)

原文发表时间:2017-04-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏钱塘大数据

风靡全球的15则数学动图,让你秒懂数学概念

首先,把圆解剖为一个三角形。底边是周长。然后根据三角形的面积推出圆的面积,so easy~

1053
来自专栏奇点大数据

遗传算法(2)

在遗传算法中我们再举一个求极大值的例子。这种例子也是比较多见的,只要我们把一些数据关系描述成函数之后就会有一些求极大值或者极小值的问题。 其实极大值和极小值是一...

33912
来自专栏AI科技大本营的专栏

AI 技术讲座精选:数学不好,也可以学习人工智能(六)——巧用数学符号

【AI100 导读】欢迎阅读《数学不好,也可以学好人工智能》系列的第六篇文章。如果你错过了之前的五部分,一定记得把它们找出来看一下!这篇文章作者会帮你学习数学符...

3728
来自专栏趣学算法

ACM竞赛学习指南(算法工程师成长计划)

5921
来自专栏ATYUN订阅号

赫尔辛基大学AI基础教程:搜索和游戏(2.3节)

在本节中,我们将研究一个经典的AI问题:游戏。为了清晰起见,我们将重点关注的最简单的场景是双人游戏,如井字棋和国际象棋等完全信息游戏。

923
来自专栏窗户

怀念Galois

  我的第一篇谈到具体学科的博客,还是献给我最钟爱的数学。   个人比较喜欢离散数学,并非因为曲高和寡,而是因为数学分析、概率论、拓扑学、泛函之类的高手实在太多...

1955
来自专栏牛客网

微软阿里实习面经(offer)微软三面阿里面试(6面)

8570
来自专栏后端技术探索

算法之经典背包问题分析与实例

我们人类是一种贪婪的动物,如果给您一个容量一定的背包和一些大小不一的物品,裝到背包里面的物品就归您,遇到这种好事大家一定不会错过,用力塞不一定是最好的办法,...

871
来自专栏算法channel

AI 路上,第一步这么走下去...

算法是描述解决一个问题的步骤,外界给它所指定的数据,然后经过一系列步骤输出一个结果。为了更快更轻量级地解决问题,我们会选择高效精简的结构去实现,这种结构称为数据...

1246
来自专栏我和未来有约会

[Silverlight动画]转向行为 - 群落

说到群落,很难不引用Craig Reynolds和他的"boilds"模拟系统。Reynolds很牛的将一个看似非常恐怖的复杂过程,拆成了几个比较简单的行为。 ...

2168

扫码关注云+社区

领取腾讯云代金券