Hello All, I have a function which outputs graphically the results of a pass-through OAS analysis. The viewport is 2x2. The idea is to leave a small margin at the top and enter a title with something like the following.
Bond Lab Pass Through OAS Bond Id: f...@bond.id OAS : foo@OAS I am a little lost on the viewport and can't quite get to the last step. The function is below and the code I have question about is in red. Glenn The function is below - The code I have a question about is in red #' OAS Analaysis of Pass Though MBS #' #' Function calls BondLab PassThroughOAS and plots the results #' copyright Bond Lab Technologies, Inc 2015 #' @importFrom BondLab PassThroughOAS #' @param bond.id a character string the bond id #' @param trade.date a character string the trade date #' @param settlement.date a character string the settlement date #' @param original.balance a numeric value the original balance #' @param price a numeric value the price #' @param sigma a numeric the **annualized** volatility. The volatilty assumption assumes #' a trading year of 252 days #' @export PassThrough.OAS <- function(bond.id = character, trade.date = character, settlement.date = character, original.balance = numeric(), price = numeric(), sigma = numeric(), paths = numeric()){ set.seed = 100 sigma = sigma/sqrt(trading.days) OAS.Analysis <- PassThroughOAS(bond.id = bond.id, trade.date = trade.date, settlement.date = settlement.date, original.bal = original.balance, price = price, sigma = sigma, paths = paths, PrepaymentAssumption = "MODEL") # price distribution OAS.Price <- data.frame(OAS.Analysis@PriceDist) OAS.Price <- data.frame(cbind(OAS.Price, seq(1: length(OAS.Price)))) colnames(OAS.Price) <- c("value", "count") price.dist <- ggplot(OAS.Price, aes(x = value )) + geom_density(fill = "#56B4E9", colour = "#56B4E9", alpha = .6) + geom_histogram(aes(y =..density..), color = "lightgrey", fill = "#0072B2", bindwidth = .01) + theme_minimal() + #scale_x_continuous(breaks = seq(80,120, 5)) + labs(title = "Price Distribution") + ylab("Density")+ xlab("Path Price") + theme(panel.grid.major = element_line(size = .25, color = "grey")) + theme(axis.text = element_text(size = 15)) + theme(axis.title = element_text(size = 20)) + theme(legend.position = "none") # modified duration distribution OAS.Mdur <- data.frame(OAS.Analysis@PathModDur) OAS.Mdur <- data.frame(cbind(OAS.Mdur, seq(1:length(OAS.Mdur)))) colnames(OAS.Mdur) <- c("value", "count") Mdur.dist <- ggplot(OAS.Mdur, aes(x = value )) + geom_density(fill = "#56B4E9", colour = "#56B4E9", alpha = .6) + geom_histogram(aes(y =..density..), color = "lightgrey", fill = "#0072B2", bindwidth = .01) + theme_minimal() + #scale_x_continuous(breaks = seq(80,120, 5)) + labs(title = "Mod. Duration Distribution") + ylab("Density")+ xlab("Path Mod. Duration") + theme(panel.grid.major = element_line(size = .25, color = "grey")) + theme(axis.text = element_text(size = 15)) + theme(axis.title = element_text(size = 20)) + theme(legend.position = "none") layout <- grid.layout(nrow = 2, ncol = 2, widths = unit(c(2,2), c("null", "null")), heights = unit(c(.3, 2), c("null", "null"))) vplayout <- function(...){ grid.newpage() pushViewport(viewport(layout = layout))} subplot <- function(x, y) {viewport(layout.pos.row = x, layout.pos.col = y)} mmplot <- function(a, b) { vplayout() print(a, vp = subplot(2, 1)) print(b, vp = subplot(2, 2)) } OAS <- mmplot(price.dist, Mdur.dist) plot(OAS) } ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.