2015-09-09 105 views
2

我試圖做圖看起來像R A彭博終端的那些彭博情節,我發現數學以下職位:製作情節看起來像R中

https://mathematica.stackexchange.com/questions/48185/make-plot-look-like-bloomberg-terminal

我的問題是,這可以在RI與ggplot2思考嗎?

+4

那你試試這麼遠嗎? –

+0

'quantmod'包中的'chartSeries(...)'旨在完成此操作。它非常接近。如果你在價格時間系列下面尋找漸變填充,那麼我不這麼認爲。 – jlhoward

+0

是的。可以辦到。 R主機中的'?theme'。考慮加入你對'ggthemes'的做法! – hrbrmstr

回答

4

這是第一次切割。它沒有漸變填充,收盤價格填充是一個矩形,而不是指向圖形的指針(我試過annotategeom="segment"以獲得箭頭背景,但它看起來像這不適合日期)。對於一般用途,它還需要一些邏輯,而不是硬編碼,以決定爲右邊的收盤價格文本分配多少區域。我還沒有包含高,低,平均值等的面板,可以使用annotate加上面板。

library(ggplot2) 

set.seed(199) 
dat = data.frame(date = seq(as.Date("2013/10/01"), as.Date("2013/12/31"), by="1 day"), 
       price = cumsum(rnorm(92, 0, 1)) + 100) 

ggplot(dat, aes(date, y=price)) + 
    geom_area(fill="navyblue", colour="white", alpha=0.5) + 
    theme(plot.background=element_rect(fill="black"), 
     panel.background=element_rect(fill="#101040"), 
     panel.grid.minor=element_blank(), 
     panel.grid.major=element_line(linetype=2), 
     axis.text=element_text(size=15, colour="white")) + 
    coord_cartesian(ylim=c(min(dat$price) - 1, max(dat$price) + 1), 
        xlim=c(min(dat$date)-2, max(dat$date)+10)) + 
    annotate("rect", xmin=max(dat$date) + 0.75, xmax=max(dat$date) + 7.25, 
      ymin=dat$price[dat$date==max(dat$date)] - 0.25, 
      ymax=dat$price[dat$date==max(dat$date)] + 0.25, fill="white", colour="black") + 
    annotate("text", max(dat$date) + 1, dat$price[dat$date==max(dat$date)], 
      label=paste0("$", round(dat$price[dat$date==max(dat$date)],2)), 
      colour="black", hjust=0) 

enter image description here