display.vector <- function(x)
{
## Purpose: Display a vector in a pretty format
## Arguments:
## x: a vector
## Return: a png picture for the vector. (each row has 10 elements)
## Author: Feiming Chen, Date: 2 Oct 2017, 14:54
## ________________________________________________
N <- length(x)
n1 <- N %% 10
if (n1 > 0) {
n2 <- 10 - n1
x.add <- rep(NA, n2)
x <- c(x, x.add)
}
x1 <- matrix(x, ncol = 10, byrow = T)
n2 <- nrow(x1)
nr <- paste0(10 * (seq.int(n2) - 1) + 1, ": ")
dimnames(x1) <- list(nr, 1:10)
tex.print(x1)
}
if (F) { # Unit Test
x <- c(402.6615584,402.1343365,402.5467634,401.835917,402.9268321,404.5185276,406.0735012,408.7713965,408.2033098,411.043676,413.953578,420.6021333,426.6352944,440.9007592,471.5614004,523.8426555,619.173643,782.3175971,1033.289048,1321.267143,1615.935774,1898.979548,2173.03472,2442.864835,2682.25644,2884.575978,3064.278857,3252.58248,3413.084683,3588.447246,3701.244129,3796.824264,3840.251429,3943.184319,4084.131835,4037.30822,4116.338229,4191.71438,4173.699815,4110.847391,4197.181334,4221.081422,4207.343855,4209.140892,4263.463393,4306.872737,4312.087451,4269.522631,4313.924265,4265.306511)
display.vector(x)
}
tex.print <- function(x, type=c("PNG", "HTML"), file=NULL, caption = file, digits=0, ...) {
## Purpose: Generate HTML or PNG representation of a data/table/model object.
## Require R "memisc" package.
## Arguments:
## x: an object (table, ftable, data frame, model object, etc. that are acceptable in R "memisc" package.
## type: what to generate --
## "HTML" shows a HTML table in a web browser.
## "PNG" shows a PNG (image) file (require linux commands: latex, dvipng, display).
## file: make a copy of the PNG file with this name. Also used for the table name.
## caption: table caption.
## digits: number of decimal places to use.
## ...: passed to "toLatex"
## Return: Display the data representation and an image file (type="PNG") for insertion.
## Author: Feiming Chen, Date: 14 Feb 2017, 11:59
## ________________________________________________
require(memisc)
type <- match.arg(type)
switch(type,
HTML = {
## Show HTML table in a Web Browser
memisc::show_html(x)
},
PNG = {
## Generate LaTeX and PNG Image file
r <- toLatex(x, ..., digits=digits, show.vars=TRUE)
f <- file("X.tex", "w")
writeLines(c("\\documentclass{article}",
"\\usepackage{booktabs}",
"\\usepackage{dcolumn}",
"\\begin{document}",
"\\pagenumbering{gobble}"), f)
if (!is.null(file)) writeLines("\\begin{table} \\centering", f)
writeLines(r, f)
if (!is.null(caption)) {
writeLines(paste0("\\caption{", caption, "} \\end{table}"), f)
}
writeLines("\\end{document}", f)
close(f)
system("latex X.tex >/dev/null") # Generate DVI file from LaTeX file (X.tex -=> X.dvi)
system("dvipng -q* -o X.png -T tight -D 200 X.dvi >/dev/null") # convert to PNG file with Tight box and Resolution of 200
system("display X.png &") # display the PNG file.
file.remove("X.tex", "X.log", "X.aux", "X.dvi")
if (!is.null(file)) file.copy("X.png", paste0(file,".png"), overwrite = T)
if (!grepl("/tmp", getwd())) {
file.copy("X.png", "~/tmp/X.png", overwrite = T)
}
}
)
invisible(NULL)
}
No comments:
Post a Comment