R için bir yeni insanım ve web sitenizi kullanmak çok yardımcı oldu. Maalesef şu anda iki gün boyunca kodumla mücadele ediyordum, bu yüzden birkaç soru sormak için istedim. Ben pdf sayfasına koymak için güzel grafikler oluşturmaya çalışıyorum ama kullanıyorum tüm paketler ile çok az sorun yaşıyorum. Yani, gerçekleştirmek istediğim üç adet grafik ve bir korelasyon tablosu içeren bir pdf sayfası oluşturmak. Aşağıda, yaptığım şeye çok benzeyen olan bir örnek oluşturdum ama değişikliğini değiştirmek istediğim birkaç şey var. Grafikler için quantmod içinde chartSeries kullanıyorum ve tablo için textplot kullanıyorum.quantmod'da grafikSource ile çalışma
Birkaç sorular:
- o grafikler sağ üst köşesindeki tarih kaldırmak mümkün mü?
- Metin yerine Son xxxx (yeşil seri metni) Dizinin kendisine ait adını almak istiyorum, ör. MSFT, bu yapılabilir mi?
- Eksen adlarını nasıl verebilirim, ör. Dönüş tarihi?
- Kümülatif Fark grafiğinde addVo() kullanıyorum ve bu güzel barPlot işlevi işlevi veriyor. Diğer grafiklerde addVo() kullanmıyorum sadece addTA ve type = 'h' ve bar/histogram grafikleri arasındaki farkı görebilirsiniz. AddVo'da olduğu gibi addTA kullanarak aynı arsa elde etmek mümkün mü?
- Korelasyon tablosuna daha iyi uymanın ve/veya daha profesyonel yapmanın bir yolu var mı? Belki başka bir işlev daha mı iyi?
iyisi,
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()
Merhaba Darren, Cevabınız için çok teşekkür ederim, en azından mümkün olmadığını bilmek güzel. Birisi diğer soruları cevaplayabilirse memnun olurum. – OTB