前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用ggplot轻松搞定太极图

用ggplot轻松搞定太极图

作者头像
数据小磨坊
发布2018-04-11 16:33:43
1.1K0
发布2018-04-11 16:33:43
举报
文章被收录于专栏:数据小魔方

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据小魔方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档