分享

ggplot2画动态气泡图

 勤悦轩 2015-09-14
 本帖最后由 cassiusoat 于 2014-5-8 08:16 编辑

#画动态气泡图
#读入数据
#数据在excel中进行处理,每一个月为一个时间段排列,总体按月升序排列,
#在每一个时间段中增加一行Apple的数据,将其纵坐标(Volume)设成极大,使其在画图时不显示
#其High变量在所有数据中的High变量最大
#High变量用来控制图形的size,这行在每个时间段中最大的数据
#用来控制整体的size_area,使其能反应出整体的变化
stocks<-read.csv("Stocks.csv", header=TRUE)
head(stocks)
#关闭区域特定的时间编码方式
Sys.setlocale("LC_TIME", "C")
#将数据的第一列转化为时间变量
stocks[,1]<-as.Date(stocks[,1])
#挑取时间单独放一组
Date<-stocks[,1]
library(ggplot2)
#共有7个公司,总共707行数据,共11个月,
#外加1个重复的APPL,用来控制size_area大小,也为110行
for(i in 1:101){
  a=(i-1)*8
TEMP<- qplot(Low, Volume, data=stocks[(a+1):(a+8),], color=NASDAQ.CODE, size= High)+
#设置size_area大小
       scale_size_area(max_size=30,guide=FALSE)+
       scale_y_log10(limits=c(136000,136000000))+
       scale_x_log10(limits=c(5, 2000))+
       scale_colour_brewer(palette="Set1",
                           name="corporate name",
                           breaks=c("AAPL","ADBE","CSCO","IBM","MSFT","ORCL","SNE"),
                           labels=c("Apple","Adobe","Cisco","IBM","Microsoft","Oracle","SONY"))+
       annotate("text", x=280, y=100000000, label = as.character(Date[a+1]),size=5,color="grey")
#用paste来黏贴字符串,使其能够循环输出图像,并选择cairo-png输出,来抗锯齿生成高质量图片
       ggsave(TEMP,file=paste((i+1000),".png",sep=""),width=5,height=4,type="cairo-png")
}
#接下来将所有的图片用photoshop或其他gif软件转化为gif或动画
#OK是不是很震惊!!~其实原理是一样的,但是效果来说会更好也更简单
#选几个显著性的来说明一下图的意义
#可以发现苹果公司从2006年以来发展十分迅猛,最近股价都已经600刀了
#IBM是比较稳定的股票
#SONY股价波动很严重
#再总结一下
#用ggplot来画动态图是通过一张张图片叠起来的,并没有直接的动画来的光滑,推荐大家可以试试googlevis
#来画更好的动态气泡图
#动态气泡图用来展现多维的大数据,至少可以显示5个变量(x,y,color,time,size),个人觉得最好横纵坐标
#为具有共线性行的变量,能够反映正态的发展趋势
#对于本次作业,变量太少,额外找了几个公司一并放上去进行处理才有了比较好的可视化效果
#总得来说ggplot做动态气泡图还是不太合适,over

Stocks.zip (18.26 KB, 下载次数: 78)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约