用R语言画动画片 炫酷技能get
用R语言画动画片 炫酷技能get
一只小桃子 发表于4年前
用R语言画动画片 炫酷技能get
  • 发表于 4年前
  • 阅读 416
  • 收藏 1
  • 点赞 0
  • 评论 1

【腾讯云】新注册用户域名抢购1元起>>>   

摘要: 抓取oracle,microsoft,apple,google的股票数据,画图,比较变化
#金融分析包,用来下载股票数据。下载下来是zoo对象,我先转成了dataframe
library(quantmod)
#Apple的数据
getSymbols("AAPL",src="yahoo",from="2013-01-01",to="2014-06-09")
APPL <- get("AAPL")
dataA <- as.data.frame(coredata(APPL))
dataA["date"] <- index(APPL)

#微软
getSymbols("MSFT",src="yahoo",from="2013-01-01",to="2014-06-09")
MESF <- get("MSFT")
dataM <- as.data.frame(coredata(MSFT))
dataM["date"] <- index(MSFT)

#oracle
getSymbols("ORCL",src="yahoo",from="2013-01-01",to="2014-06-09")
ORCL <- get("ORCL")
dataO <- as.data.frame(coredata(ORCL))
dataO["date"] <- index(ORCL)

#google
getSymbols("GOOGL",src="yahoo",from="2013-01-01",to="2014-06-09")
GOOGL <- get("GOOGL")
dataG <- as.data.frame(coredata(GOOGL))
dataG["date"] <- index(GOOGL)

#统计有多少行数据
totalLength <- length(dataG[,1])
#统计最大值
maxp <- c(max(dataA[,6]),max(dataM[,6]),max(dataO[,6]),max(dataG[,6]))
maxfinal <- max(maxp)
companyNames <- c("apple","ms","oracle","google")

library(ggplot2)
#画出数据第几行的图片
drawGG <- function(index){
  temp <- data.frame("company"=companyNames,
                     "price"=c(dataA[index,6],dataM[index,6],dataO[index,6],dataG[index,6]),
                     "volume"=c(dataA[index,5],dataM[index,5],dataO[index,5],dataG[index,5]))
  ggplot(temp,aes(company,price))+geom_bar(aes(fill=company),show_guide=F,stat="identity")+
    labs(title=dataA[index,7],color="grey")+ylim(0,maxfinal)
}
#重复画多少次
drawRepeat <- function(totalLength){
  for (i in 1:totalLength){
    print(drawGG(i)) 
  }
}

library(animation)
#开始画动画 nmax表示画多少张图,经实验 最多2000,取大了会报错
#ffmpeg为制作视频的软件,下载解压,给出地址就可以了。mp4格式经实验不行,这里用了avi
#-b 300k  表示图片质量,越大视频越清晰
oopts = ani.options(interval = 0.1,nmax=totalLength,ffmpeg = "D:/programfiles/ffmpeg/ffmpeg/bin/ffmpeg.exe")
saveVideo({
  drawRepeat(totalLength)
},video.name = "test.avi", other.opts = "-b 300k")
ani.options(oopts)

#还可以画GIF ,SWF 但需要相应的软件支持,先安装ImageMagick,然后画GIF
saveGIF({
    ani.options(nmax = 30,convert = shQuote('D:/programfiles/imagemagick/ImageMagick-6.8.9-3/convert.exe'))
    drawRepeat(30)
}, interval = 0.1, movie.name = "test.gif", ani.width = 600, ani.height = 600)

效果图:



开源中国上传不了250k的图片 gif我就不传上来了


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
一只小桃子
粉丝 198
博文 85
码字总数 111101
评论 (1)
×
一只小桃子
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: