R 11 week

下载Apple、Google、微软三家股票数据,计算它们从2008年到2011年每年的总成交量。然后画一堆叠方式的直方图,横坐标上标注股票名,直方图描述每一年成交量占总成交量的百分比,这个百分比要标注在直方图内部,颜色代表不同的年份(用图例说明)

library("quantmod")
## Loading required package: Defaults
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## 
## 下列对象被屏蔽了from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## Loading required package: TTR
## Version 0.4-0 included new data defaults. See ?getSymbols.
library("RColorBrewer")

数据的获取和前期准备

getSymbols(c("AAPL", "GOOG", "MSFT"), src = "yahoo", from = "2008-01-01", to = "2011-12-31")
##     As of 0.4-0, 'getSymbols' uses env=parent.frame() and
##  auto.assign=TRUE by default.
## 
##  This  behavior  will be  phased out in 0.5-0  when the call  will
##  default to use auto.assign=FALSE. getOption("getSymbols.env") and 
##  getOptions("getSymbols.auto.assign") are now checked for alternate defaults
## 
##  This message is shown once per session and may be disabled by setting 
##  options("getSymbols.warning4.0"=FALSE). See ?getSymbol for more details
## [1] "AAPL" "GOOG" "MSFT"
stock.df = data.frame(year = (2008:2011))
stock.df$Apple = round(Vo(to.yearly(AAPL))/sum(Vo(to.yearly(AAPL))) * 100, 2)
stock.df$Google = round(Vo(to.yearly(GOOG))/sum(Vo(to.yearly(GOOG))) * 100, 
    2)
stock.df$Microsoft = round(Vo(to.yearly(MSFT))/sum(Vo(to.yearly(MSFT))) * 100, 
    2)

作图

par(mar = c(5, 4, 4, 10), xpd = TRUE)
x = barplot(as.matrix(stock.df[, 2:4]), col = brewer.pal(4, "Set1"), ylab = "总成交量百分比%", 
    main = "")
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<e6>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<80>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<bb>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<e6>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<88>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<90>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<e4>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<ba>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<a4>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<e9>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<87>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<8f>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<e7>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<99>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<be>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<e5>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<88>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<86>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<e6>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<af>代替了dot
## Warning: 'mbcsToSbcs'里转换'鎬绘垚浜ら噺鐧惧垎姣<U+393C><U+3E34>%'出错:<94>代替了dot
legend(x = 3.8, y = 100, legend = stock.df$year, fill = brewer.pal(4, "Set1"))
y1 = stock.df[1, -1]/2
y2 = stock.df[2, -1]/2 + stock.df[1, -1]
y3 = stock.df[3, -1]/2 + stock.df[2, -1] + stock.df[1, -1]
y4 = stock.df[4, -1]/2 + stock.df[3, -1] + stock.df[2, -1] + stock.df[1, -1]
y = c(y1[, 1:3], y2[, 1:3], y3[, 1:3], y4[, 1:3])
stock.df$Apple = paste(round(Vo(to.yearly(AAPL))/sum(Vo(to.yearly(AAPL))) * 
    100, 2), "%")
stock.df$Google = paste(round(Vo(to.yearly(GOOG))/sum(Vo(to.yearly(GOOG))) * 
    100, 2), "%")
stock.df$Microsoft = paste(round(Vo(to.yearly(MSFT))/sum(Vo(to.yearly(MSFT))) * 
    100, 2), "%")
text(x, y, t(as.matrix(stock.df[, -1])))
box(bty = "l")

plot of chunk unnamed-chunk-3