本帖最后由 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 ![]() ![]() |
|