下载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")