首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >信息图表高仿——R语言仿一财经典线条比较图

信息图表高仿——R语言仿一财经典线条比较图

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

今天是一个图表高仿,对象是一财经典的半圆型线条比较图,信息主要是针对2016年天猫全球购物狂欢节的当日总销售额,为了使得比较效果更有针对性,作者使用了几个中小型体量的国家GDP总量来对比,总体来看比较生动形象,引人眼球。

但是该图制作比较复杂,之前看到过大神们用Excel来构造半圆的路径数据进行仿制,这里小编使用R来构造曲线数据,大体思路差不多,都是构造曲线的路径数据,链接各点形成整体上的半圆线条,但是R在处理这些数据过程中,具有先天优势,效率相对较高。

library("xlsx") library("ggplot2") library(stringr) library(showtext) library(Cairo)

setwd("F:/微信公众号/公众号——数据小魔方/2017年3月/20170331") mydata<-read.xlsx("barpoint.xlsx",sheetName="Sheet1",header=T,encoding='UTF-8',stringsAsFactors=FALSE) m<-max(nchar(mydata$Name)) mydata$Name<-str_pad(mydata$Name,44,side="right",pad=" ")

生成10个半圆线条的路径点(水平轴X上的点,使用seq可以生成任意区间的等间隔点)数据并按顺序合并。

sdd<-c() for(m in 1:nrow(mydata)){ x<-seq(from=0,to=mydata$Scale[m],length=1000) sdd<-c(sdd,x) }

生成对应的ID、半径和对应半圆的垂直轴的Y坐标点。

这是圆形曲线的方程式,高中学过的哦表忘了(我昨晚是问了我的室友才才确定是这么写的~_~) 曲线方程式: x^2+Y^2=R^2 Y=sqrt((R/2)^2-(X-R/2)^2) id<-rep(LETTERS[1:10],rep(1000,10)) rdd<-rep(mydata$Scale,rep(1000,10)) y<-sqrt((rdd/2)^2-(sdd-rdd/2)^2)

mynewdata<-data.frame(id,sdd,y)

这里为了更加方便的,使用自动输出方式:

font.add("myfont","msyhl.ttc") CairoPNG(file="C:/Users/Administrator/Desktop/barpoint.png",width=1000,height=1050) showtext.begin() ggplot()+ geom_path(data=mynewdata[mynewdata$id!="F",],aes(x=sdd,y=y,group=id),color="white")+ geom_path(data=mynewdata[mynewdata$id=="F",],aes(x=sdd,y=y,group=id),color="#D56A55")+ geom_segment(data=NULL,aes(x=0,y=0,xend=1690,yend=0),color="white",size=1)+ geom_point(data=mydata,aes(x=Scale,y=0),color="White",size=3)+ geom_text(data=NULL,aes(x=mydata$Scale[c(-4,-6,-8)],y=-30,label=mydata$Scale[c(-4,-6,-8)]),size=4,col="white",family="myfont")+ geom_text(data=NULL,aes(x=mydata$Scale[c(4,6,8)],y=-60,label=mydata$Scale[c(4,6,8)]),size=4,col="white",family="myfont")+ ylim(-70,900)+ scale_x_continuous(breaks=mydata$Scale,labels=mydata$Name)+ labs(title="1207亿元意味着什么?",subtitle="意味着什么,什么,什么,什么???",caption="注:图中数据已根据中国银行2016年11月10日发布的中间汇率美元兑换人民币汇率\n为1:6.7885进行换算",x="",y="")+ theme( panel.background=element_rect(fill="black"), plot.background=element_rect(fill="black"), axis.text.x=element_text(angle=-90,colour="white",hjust=0,size=12), axis.text.y=element_blank(), panel.grid=element_blank(), axis.ticks=element_blank(), plot.margin=unit(c(1,.5,1.6,.5),"lines"), panel.spacing=unit(c(0,0,0,0),"lines"), text=element_text(family="myfont"), plot.title=element_text(size=50,colour="white",lineheight=1.2), plot.subtitle=element_text(size=35,colour="white",lineheight=1.2), plot.caption=element_text(size=25,hjust=0,colour="white"), panel.border=element_blank() ) showtext.end() dev.off()

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

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

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

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

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