2012-07-30 6 views
5

私はRの初心者です。あなたのウェブサイトを使用すると非常に役に立ちました。 残念ながら私は2日間コードを苦労しているので、 はほとんど質問しませんでした。私は pdfシートに入れていいグラフを作成しようとしていましたが、私は を使っているすべてのパッケージにはほとんど問題がありません。だから私が達成したいのは、3つの グラフと1つの相関テーブルを持つ1つのpdfシートを作成することです。以下は私が作成した例で、 と似ていますが、私は に変更したいことがいくつかあります。私はグラフとテーブルのquantmodでchartSeriesを使用しています 私はtextplotを使用しています。quantmodでchartSeriesを操作する

いくつかの質問:

  1. それは グラフの右上に日付を削除することは可能ですか?
  2. Last xxxx(緑の系列のテキスト)の代わりに、シリーズ自体の名前を にしたいと思います。 MSFT、それは実践ですか?
  3. どのように軸の名前を付けることができますか?戻る、日付?
  4. 累積差分グラフでは、私はaddVo()を使用していて、 関数がこの素晴らしいbarPlotを与えています。他のグラフでは、私はaddVo()を使用していません ちょうどaddTAとタイプ= 'h'とバー/ヒストグラム プロットの違いを見ることができます。 addVoのようにaddTAを使って同じプロットを得ることは可能ですか?
  5. 相関テーブルをより良く適合させる方法がありますか、より専門的にする方法がありますか。多分別の機能は良いですか?

ベスト、

OTB

install.packages("quantmod") 
install.packages("gplots") 
library(quantmod) 
library(gplots) 

#setwd("..........") 

getSymbols("MSFT") 
getSymbols("AAPL") 
getSymbols("COKE") 
getSymbols("PEP") 

#Get the return 
MSFT.Return <- diff(MSFT)/lag(MSFT) 
AAPL.Return <- diff(AAPL)/lag(AAPL) 
COKE.Return <- diff(COKE)/lag(COKE) 
PEP.Return <- diff(PEP)/lag(PEP) 

#Get the return for last two months and only get close price return. 
#because in my data I only have the close price. 
MSFT.Close <- MSFT.Return['2012-06-01::2012-07-27', 'MSFT.Close'] 
AAPL.Close <- AAPL.Return['2012-06-01::2012-07-27', 'AAPL.Close'] 
COKE.Close <- COKE.Return['2012-06-01::2012-07-27', 'COKE.Close'] 
PEP.Close <- PEP.Return['2012-06-01::2012-07-27', 'PEP.Close'] 

pdf(sprintf("%s.pdf","ExampleGraph"), width=11.69, height=8.27) 

layout(matrix(1:8, nrow=4)) 

#Get the difference in return 
techDifference <- MSFT.Close - AAPL.Close 
bevDifference <- COKE.Close - PEP.Close 

#Rename columns 
colnames(MSFT.Close)[1] <- "MSFT" 
colnames(AAPL.Close)[1] <- "AAPL" 
colnames(techDifference)[1] <- "Difference" 

colnames(COKE.Close)[1] <- "COKE" 
colnames(PEP.Close)[1] <- "PEP" 
colnames(bevDifference)[1] <- "Difference" 

#Combine into two tables 
tech <- cbind(MSFT.Close,AAPL.Close,techDifference) 
bev <- cbind(COKE.Close,PEP.Close,bevDifference) 

#Plot charts 
chartSeries(tech, order=1,up.col='green', name='MSFT & AAPL', layout=NULL, 
TA=c("addTA(tech,order=2,on=1,layout=NULL); 
addTA(tech$Difference,legend='Difference',type='h',layout=NULL)")) 

chartSeries(bev, order=1,up.col='green', name='COKE & PEP', layout=NULL, 
TA=c("addTA(bev,order=2,on=1,layout=NULL); 
addTA(bevDifference$Difference,legend='Difference',type='h',layout=NULL)")) 

#Take the cumulative difference for each sector 
techCumulative <- cumsum(abs(techDifference)) 
bevCumulative <- cumsum(abs(bevDifference)) 
diffCumulative <- techCumulative - bevCumulative 

#Rename columns 
colnames(techCumulative)[1] <- "Tech" 
colnames(bevCumulative)[1] <- "Beverage" 
#If I set the name as Volume, I can use addVo() and get nice barplot. 
#Problem with that is the legend name will be Volume but I would like to 
#have it Difference and of course I'm using wrong column name. 
colnames(diffCumulative)[1] <- "Volume" 

#Combine into one table 
cumulative <- cbind(techCumulative,bevCumulative,diffCumulative) 

#Plot chart 
chartSeries(cumulative,order=1,up.col='green', name='Cumulative Difference', layout=NULL, 
TA=c("addTA(cumulative,order=2,on=1,layout=NULL)", addVo())) 

#Get the correlation matrix 
correlationTable <- cbind(tech[,1:2],bev[,1:2]) 
correlation <- cor(correlationTable) 
corTable <- as.table(correlation) 
corrFormatted <- formatC(corTable, format = "f", digits = 3) 
textplot(corrFormatted,valign="top",col.data=colors()[300], 
col.rownames=colors()[300],col.colnames=colors()[300]) 
title("Correlation",cex.main=2.5,col.main=colors()[300]) 

dev.off() 

答えて

2

いくつかの良い質問。

Q1:

old.adj <- par('adj') 
par('adj'=0) 
do.call('title',list([email protected], [email protected]$fg.col)) 
par('adj'=1) 
do.call('title',list(paste('[',start(xx),'/',end(xx),']', sep='') 
        ,[email protected]$main.col)) 
par('adj'=old.adj) 

即ち:第quantmod:::chartSeries.chobこのコードを有します開始(xx)/終了(xx)ビットはハードコードされています。

Q2。ここでも、それはハードコーディングされているように見える(同じ機能):

if([email protected]=='line') { 
    lines(x.pos,Closes,[email protected]$up.col,[email protected]) 
    main.key <- c(list(list(legend= 
         paste('Last',last(Closes)), 
         [email protected]$up.col)),main.key) 
} 

(私は申し訳ありませんが、Q3/Q4/Q5に役立つソースコードの私の研究で何かを見つけることができませんでした)

+0

こんにちはDarren、ありがとうございました。それは不可能であることを知ることは少なくとも良いことです。誰かが他の質問に答えることができたら、私はそれを感謝します。 – OTB

関連する問題