2017-04-07 8 views
0

Je suis en train d'implémenter cette analyse dans R: télécharger l'ensemble de données, créer un objet zoo et tracer l'ensemble de données.Ajustement d'une parcelle avec des étiquettes y multilignes

library(tseries) 
library(zoo) 

start <- "2011-01-01" 
end <- "2014-12-31" 

MET <- get.hist.quote("MET", quote="Close", start=start, end=end) 
MHK <- get.hist.quote("MHK", quote="Close", start=start, end=end) 
MJN <- get.hist.quote("MJN", quote="Close", start=start, end=end) 
MKC <- get.hist.quote("MKC", quote="Close", start=start, end=end) 
MLM <- get.hist.quote("MLM", quote="Close", start=start, end=end) 
MMC <- get.hist.quote("MMC", quote="Close", start=start, end=end) 
MMM <- get.hist.quote("MMM", quote="Close", start=start, end=end) 
MNK <- get.hist.quote("MNK", quote="Close", start=start, end=end) 
MNST <- get.hist.quote("MNST", quote="Close", start=start, end=end) 
MO <- get.hist.quote("MO", quote="Close", start=start, end=end) 
MON <- get.hist.quote("MON", quote="Close", start=start, end=end) 
MOS <- get.hist.quote("MOS", quote="Close", start=start, end=end) 
MPC <- get.hist.quote("MPC", quote="Close", start=start, end=end) 
MRK <- get.hist.quote("MRK", quote="Close", start=start, end=end) 
MRO <- get.hist.quote("MRO", quote="Close", start=start, end=end) 

Series <- zoo(cbind(MET, MHK, MJN, MKC, MLM, MMC, MMM, MNK, MNST, MO, 
        MON, MOS, MPC, MRK, MRO)) 
colnames(Series) <- c("MetLife", "Mohawk", "\nMead\nJohnson", 
         "McCormick", "Martin\nMarietta", 
         "Marsh and\nMcLennan", "3M", "Mallinckrodt", 
         "Monster\nBeverage", "Altria", "Monsanto", 
         "The Mosaic\nCompany", "Marathon\nPetroleum", 
         "Merck", "Marathon Oil") 
Series <- na.approx(Series) 

plot(Series, main = "", xlab = "") 

Afin de présenter un graphique plus beau, j'ai introduit la commande \n pour séparer les noms d'étiquettes y en 2 lignes. Mais la sortie graphique met les étiquettes y à gauche hors de la marge.

R Plot Example

J'ai essayé de modifier à la fois mar et mai dans la fonction par() sans aucun changement du tout de ma sortie. Je pense que cela peut être lié à l'objet dessiné (un objet de zoo).

Répondre

0

tidyverse - en particulier ggplot fait un peu plus facile d'obtenir raisonnablement regarder les graphiques sans réglage des paramètres de trois lettres d'un acronyme ad infinitum:

library(tidyverse) 

Series %>% 
    as.data.frame %>% 
    mutate(date = row.names(.) %>% as.Date) %>% 
    gather(ticker, price, -date) %>% 
    filter (!is.na(price)) -> 
    dl 

dl %>% 
    ggplot(aes(date, price)) + 
    geom_line() + 
    facet_wrap(~ticker, strip.position = "left", ncol = 2) 

tickers in ggplot

NB: Vous pouvez même obtenir l'emballage \n automatiquement avec facet_wrap(..., labeller = labeller(ticker = label_wrap_gen(10))

NB2: une partie de la série n'a pas été téléchargée (toutes les NA), je n'ai pas dérangé

+0

Je pensais aussi à ggplot2. Mais je préfère la sortie donnée par l'intrigue normale. En utilisant le ggplot toutes les séries sont lisses afin d'avoir la même échelle Y. Pourriez-vous s'il vous plaît m'aider à modifier la marge de l'image ci-dessus? –

+0

On dirait que vous avez besoin de 'facet_wrap (.., scales =" free_y ")';). Désolé, je ne connais pas du tout les graphismes de base en R, mais je soupçonne que 'zoo' aura sa propre méthode' plot', qui peut heureusement ignorer les paramètres 'par()' .. – liborm

+0

Après un peu de googling je found [this] (https://timelyportfolio.github.io/rCharts_time_series/history.html), où 'autoplot.zoo()' rendrait probablement encore plus facile le tracé de vos données. – liborm