2017-04-07 68 views
0

我在R中執行此分析:下載數據集,創建動物園對象並繪製數據集。擬合具有多行y標籤的繪圖

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 = "") 

爲了呈現更好看的圖,我已經介紹了命令\n在2行分裂在y標籤名稱。但圖形輸出將左邊的y標籤放在邊界外。

R Plot Example

我已經試過沒有我所有的輸出的任何改變,同時修改Mar和馬伊功能par()。我認爲這可能可以鏈接到對象繪製(一個動物園對象)。

回答

0

tidyverse - 尤其是ggplot使得它更容易一點得到合理的好看的圖形不調整三個字母,acronymed參數循環往復:

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:你甚至可以得到\n包裝自動與facet_wrap(..., labeller = labeller(ticker = label_wrap_gen(10))

NB2:一些系列沒有下載(所有新手),我沒有打擾

+0

我也在想ggplot2。但我更喜歡正常情節給出的輸出。使用ggplot所有系列平滑以便具有相同的Y尺度。你能幫我修改上面圖片的邊距嗎? –

+0

聽起來像你需要'facet_wrap(..,scales =「free_y」)';)。對不起,我根本不知道R中的基本圖形,但我懷疑'動物園'會有它自己的'plot'方法,它可以愉快地忽略'par()'設置。 – liborm

+0

發現[this](https://timelyportfolio.github.io/rCharts_time_series/history.html),其中'autoplot.zoo()'可能會使繪製數據變得更容易。 – liborm