我已经提出了一个问题:我需要用DPI=1200和特定的打印尺寸来绘制图像.

默认情况下,png看起来不错...

png("test.png",width=3.25,height=3.25,units="in",res=1200)
par(mar=c(5,5,2,2),xaxs = "i",yaxs = "i",cex.axis=1.3,cex.lab=1.4)
plot(perf,avg="vertical",spread.estimate="stddev",col="black",lty=3, lwd=3)
dev.off()

但当我应用这段代码时,图像变得非常糟糕,因为它无法zoom 到所需的大小.我错过了什么?如何将图像与情节"匹配"?

在此处输入图像描述

推荐答案

一个可重复的例子:

the_plot <- function()
{
  x <- seq(0, 1, length.out = 100)
  y <- pbeta(x, 1, 10)
  plot(
    x,
    y,
    xlab = "False Positive Rate",
    ylab = "Average true positive rate",
    type = "l"
  )
}

James建议使用pointsize,并结合各种cex参数,可以产生合理的结果.

png(
  "test.png",
  width     = 3.25,
  height    = 3.25,
  units     = "in",
  res       = 1200,
  pointsize = 4
)
par(
  mar      = c(5, 5, 2, 2),
  xaxs     = "i",
  yaxs     = "i",
  cex.axis = 2,
  cex.lab  = 2
)
the_plot()
dev.off()

当然,更好的解决方案是放弃这种对基本图形的摆弄,使用一个可以为您处理分辨率zoom 的系统.例如

library(ggplot2)

ggplot_alternative <- function()
{
  the_data <- data.frame(
    x <- seq(0, 1, length.out = 100),
    y = pbeta(x, 1, 10)
  )

ggplot(the_data, aes(x, y)) +
    geom_line() +
    xlab("False Positive Rate") +
    ylab("Average true positive rate") +
    coord_cartesian(0:1, 0:1)
}

ggsave(
  "ggtest.png",
  ggplot_alternative(),
  width = 3.25,
  height = 3.25,
  dpi = 1200
)

R相关问答推荐

基于2行删除重复项指定每列要执行的操作

如何在热图中绘制一个图形,但在每个单元格中通过饼形图显示?

如何将y轴上的线定位得彼此更近

将带有范围的字符串转换为R中的数字载体

如何从其他前面列中减go 特定列的平均值?

在ggplot的注释表格中突出显示最大值

Tidyverse/Djirr为从嵌套列表中提取的列名赋值的解决方案

如何在RMarkdown LaTex PDF输出中包含英语和阿拉伯语?

在使用ggroove后,将图例合并在gplot中

用相同方法得到不同函数的ROC最优截断值

如何在一次运行中使用count进行多列计数

移除仪表板Quarto中顶盖和车身之间的白色区域

我如何才能找到FAMILY=POISSON(LINK=&Q;LOG&Q;)中的模型预测指定值的日期?

在rpart. plot或fancyRpartPlot中使用带有下标的希腊字母作为标签?

R Read.table函数无法对制表符分隔的数据正常工作

如何计算增加10米(0.01公里)的行?

仅当后续值与特定值匹配时,才在列中回填Nas

无法将条件case_when()应用于使用!!创建的新变量Mutations

基于R中的辅助向量中的值有条件地连接向量中的字符串

条形图中的条形图没有try 赋予它们的 colored颜色