gpt4 book ai didi

r - 如何在页面上查找 R 图形的字节大小?

转载 作者:行者123 更新时间:2023-12-02 08:17:13 24 4
gpt4 key购买 nike

我想监控在各个页面上用 R 生成的图形的基本质量,例如每个页面的字节大小,...我现在只能做平均页面的质量保证,请参阅下一章。我认为任务必须有一些内在的东西而不是平均措施。

Rplots.pdf 中生成 4 页的代码,我想知道输出中每个页面的字节大小;也欢迎任何其他页面输出统计数据;您可以获得对象的基本内存监控 here但我希望它与 PDF 中的输出相对应

# https://stat.ethz.ch/R-manual/R-devel/library/graphics/html/plot.html
require(stats) # for lowess, rpois, rnorm
plot(cars)
lines(lowess(cars))

plot(sin, -pi, 2*pi) # see ?plot.function

## Discrete Distribution Plot:
plot(table(rpois(100, 5)), type = "h", col = "red", lwd = 10,
main = "rpois(100, lambda = 5)")

## Simple quantiles/ECDF, see ecdf() {library(stats)} for a better one:
plot(x <- sort(rnorm(47)), type = "s", main = "plot(x, type = \"s\")")
points(x, cex = .5, col = "dark red")

## TODO summarise here the byte size of figures in the figures (1-4)
# Output: Rplot.pdf where 4 pages; I want to know the size of each page in bytes

我目前正在命令行中进行基本的质量保证,但想将其中的一些移至 R,以便更快地观察错误。

预期输出:字节大小,例如 ls -l

的第 4 列

获取输出文档中单个页面的平均字节大小

限制

  • 页面数据同质性的要求。此方法仅适用于所有页面都来自同一示例的情况。否则就很麻烦,因为它只是平均,而不是描述当时的个别现象。其他可能的弱点
  • PDF 元素和元数据。将 PDF 文件视为一个整体,而不是关注图形对象本身。所以这限制了绝对值的使用,因为文件大小还包含标题和其他与图形对象无关的元数据。

代码

filename <- "main.pdf"
filesize <- file.size(filename)
# http://unix.stackexchange.com/q/331175/16920
pages <- Rpoppler::PDF_info(filename)$Pages

# print page size (= filesize / pages)
pagesize <- filesize / pages

## data of example file
num 7350960
int 62
num 118564

输入:任何 62 页的文档
输出:平均单个页面大小 (118564)

测试and's回答

输出但您不能轻易将输入更改为您想要的 PDF 文件

     files                             size_bytes 
[1,] "./test_page_size_pdf/page01.pdf" "4,123,942"
[2,] "./test_page_size_pdf/page02.pdf" " 4,971"
[3,] "./test_page_size_pdf/page03.pdf" " 4,672"
[4,] "./test_page_size_pdf/page04.pdf" " 5,370"

输入:任何 64 页的文档
预期输出:67(= 64 + 3)页,未分析 4

R: 3.3.2
操作系统:Debian 8.5

最佳答案

如果您的系统上尚未安装 pdftk 实用程序,请下载并安装它,然后从 R 中尝试以下替代方法之一。

1) 它将返回一个数据框,其中包含以字节为单位的页面文件大小和其他信息。

myfile <- "Rplots.pdf"
system(paste("pdftk", myfile, "burst"))
file.info(Sys.glob("pg_*.pdf"))

它还会生成一个文件 doc_data.txt,其中包含一些您可能感兴趣也可能不感兴趣的杂项信息。

1a) 此替代方案不会生成任何文件。它只会将页面的字符大小作为数字向量返回。

myfile <- "Rplots.pdf"
pages <- as.numeric(read.dcf(pipe(paste("pdftk", myfile, "dump_data")))[, "NumberOfPages"])
cmds <- sprintf("pdftk %s cat %d output - | wc -c", myfile, seq_len(pages))
unname(sapply(cmds, function(cmd) scan(pipe(cmd), quiet = TRUE)))

如果pdftk,以上应该有效和 wc在你的路上。请注意,在 Windows 上您可以找到 wc在 Rtools 发行版中,通常位于 "C:\\Rtools\\bin\\wc"安装 Rtools 后。

2) 这个替代方案类似于 (1) 但使用动画包:

library(animation)

ani.options(pdftk = "/path/to/pdftk")
pdftk("Rplots.pdf", "burst", "pg_%04d.pdf", "")
file.info(Sys.glob("pg_*.pdf"))

关于r - 如何在页面上查找 R 图形的字节大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40982408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com