2010-05-08 1 views
3

Le package quantmod de Jeff Ryan constitue une excellente contribution au monde de la finance R. J'aime utiliser la fonction chartSeries(), mais lorsque j'essaie d'afficher plusieurs fenêtres simultanément, cela ne fonctionne pas.Impossible d'obtenir plusieurs diagrammes de panneaux avec la fonction chartSeries à partir du package quantod dans R

par(mfrow=c(2,2)) 

chartSeries (SPX) 
chartSeries (SPX, subset="2010") 

chartSeries (NDX) 
chartSeries (NDX, subset="2010") 

retournerait normalement un graphique à quatre panneaux comme il le fait avec la fonction plot(), mais dans l'exemple de ChartSeries il traverse tous les cas un à la fois, sans créer un seul graphique à quatre panneaux.

Répondre

4

utilisez chart_Series() au lieu de chartSeries() il est compatible avec layout() et par().

+0

Quel paquet est chart_Series() dans? Il n'est pas reconnu avec require ("quantmod") – Milktrader

+0

D'accord, trouvé chart_Series() dans la documentation quantmod, mais la fonction n'est pas reconnue lorsqu'elle est appelée. – Milktrader

+0

Cette réponse fonctionne pour R 32 bits dans OSX, mais pas 64 bits R dans OSX – Milktrader

0

Non, malheureusement, vous ne pouvez pas (sauf si cela a changé très récemment).

La puissance d'ajouter de nouveaux sous-panneaux vient au prix de ne pas pouvoir combiner ces graphiques comme vous le feriez autrement dans les graphiques de base. Mais vous pouvez les recréer dans les graphiques de base, puis les expressions idiomatiques par(mfrow=...) seront disponibles.

+0

Merci Dirk. Je travaillais sur un projet de vue d'ensemble des marchés en fin de journée (EOD) et je vais aller dans un autre sens avec ça maintenant. – Milktrader

0

Je vais juste ajouter au poste de Brian G. Peterson un quantmod exemple de code de travail pour la création chart_Series parcelles en plusieurs panneaux:

# download data and copy it into environment 
sym_bols <- c("IEF", "VTI", "XLP", "XLF", "XLK", "VXX") 
data_env <- new.env() 
quantmod::getSymbols(sym_bols, env=data_env, from="2017-01-01") 
# create chart_Series plots in multiple panels 
x11() 
par(mfrow=c(3, 2)) 
par(mar=c(2, 2, 2, 1), oma=c(0, 0, 0, 0)) 
eapply(data_env, function(x) { 
    plot(quantmod::chart_Series(x["2017-06/"], 
     name=strsplit(colnames(x)[1], split="[.]")[[1]][1])) 
}) # end eapply 

Notez que chart_Series doivent être emballées dans plot.

produit le tracé suivant:

enter image description here

Questions connexes