一、起因(闲聊,可跳过)

最近需要用到环状图,照着说明书浅学了一下 circlize包 (网上的教程几乎全是机翻后的说明书内容,远不如直接看说明书,然说明书又太长,后续补一份文章,讲一下我自己的理解思路,方便后续生疏后可以快速上手),在成图的时候发现图片质量很差,就连坐标轴都是歪的。例如下图。
在这里插入图片描述
附上代码:

circlize_plot = function() {
  set.seed(12345)
  sectors = letters[1:10]
  circos.initialize(sectors, xlim = c(0, 1))
  circos.track(ylim = c(0, 1), panel.fun = function(x, y) {
    circos.points(runif(20), runif(20), cex = 0.5, pch = 16, col = 2)
    circos.points(runif(20), runif(20), cex = 0.5, pch = 16, col = 3)
    circos.axis(labels.cex = 0.6)
  circos.track(ylim = c(0, 1), panel.fun = function(x, y) {
    circos.lines(sort(runif(20)), runif(20), col = 4)
    circos.lines(sort(runif(20)), runif(20), col = 5)
  for(i in 1:10) {
    circos.link(sample(sectors, 1), sort(runif(10))[1:2], 
                sample(sectors, 1), sort(runif(10))[1:2],
                col = add_transparency(col_fun(rnorm(1))))
  circos.clear()
circlize_plot()
png("circliz.png")
circlize_plot() #绘制图片的代码,放在pdf和dev.off中间
dev.off()

我师兄的第一反应都是让我换软件了,哈哈。但作为一个出了这么多年的软件不应该有这样的问题,我思考了一下,可能有下面几个原因。

  • 1、circlize包中可能有我未知的绘图前的需要设置的参数。
  • 2、受限于Rstudio本身的原因,图片无法展示高清细节,需要下载为高像素的图片。
    针对第一个猜测,我发现说明书中没有特别提及相关参数,为了排除代码问题,我找了一个说明书中的示例代码,跑了一遍,与说明书中的高清图片不同,我仍然得到了低质量图片,所以排除这个猜测。下图为说明书中的图片。

针对第二个猜测,我去网上查询了一下,果然遇到相同问题的人不少啊。

二、如何在R中导出高清图片(矢量图)

2.1、保存为EPS图片格式后转AI编辑

  • 1、把自己的图片保存成EPS格式

    • Encapsulated Post Script (eps),是一种被封装后的文件。主要由Ai软件生成的。PS和AI均可以打开,只不过用PS打开时会将eps文件进行栅格化(像素会变到300dpi,会变糊,所以建议用AI打开)。
      在这里插入图片描述
      在这里插入图片描述
  • 2、得到保存的EPS图片,用Adobe Illustrator (AI)打开
    在这里插入图片描述

  • 3、在AI中可以编辑,保存成自己想要的格式
    在这里插入图片描述

2.2、保存为PDF格式(推荐)

  • 直接导出为PDF格式,也可以得到导出pdf的矢量图,后续想要编辑,还是转到AI中打开。
pdf("circliz.pdf")
circlize_plot() #绘制图片的代码,放在pdf和dev.off中间
dev.off()

2.3、用ggplot2包的ggsave函数输出图片(SVG格式)

  • 相较于base中提供的保存图片函数,ggsave函数的功能更强,可以设置长宽和分辨率(dpi)大小及保存的格式等,自然可以获得高清图片。可惜的是并非所有函数生成的图片都适用于ggsave函数保存(例如circlize包绘制的图形就不行)。
  • 可缩放矢量图形(Scalable Vector Graphics,SVG)基于 XML 标记语言,用于描述二维的矢量图形
library(ggplot2)
ggsave(filename = “filename.svg”, polt, width=  ,height=  ,dpi= )

三、矢量图与位图

  • 其实最开始我获得的图片是位图(Bitmap),由一个个像素点构成,所以放大后才看起来不连贯。后续获得的高清图片则是矢量图(Vector),也称为面向对象的图像或绘图图像,在数学上定义为一系列由点连接的线。由于图像是由数学公式描述的,可以根据需要重新生成,所以矢量图可以进行无损缩放

  • 位图和矢量图是两种常见的图像表示方法,它们有一些明显的区别。下面是位图和矢量图之间的主要区别:

    • 定义方式:
      • 位图:由像素(Pixel)组成的网格,每个像素都有自己的颜色值。图像被分成许多小的方块,每个方块称为像素。
      • 矢量图:使用数学公式描述图像,通过定义线段、曲线、形状等来创建图像。
    • 缩放性:
      • 位图:在缩放时,位图会失去一定的精度。当放大位图时,边缘变得锯齿状,而缩小位图时,细节可能会丢失。
      • 矢量图:矢量图可以无损地进行缩放,因为图像是由数学公式描述的,可以根据需要重新生成。
    • 文件大小:
      • 位图:文件大小取决于像素的数量和颜色深度。由于每个像素都需要存储颜色信息,位图文件通常比较大。
      • 矢量图:矢量图文件通常相对较小,因为它们仅存储对象的描述和属性,而不存储每个像素的颜色信息。
    • 分辨率:
      • 位图:位图具有特定的分辨率,表示为每英寸的像素数(DPI)。更高的分辨率可以提供更多的细节和更清晰的图像。
      • 矢量图:矢量图没有固定的分辨率,它们可以无损地缩放到任意分辨率。
    • 编辑灵活性:
      • 位图:位图通常是平面图像,难以修改或编辑。对位图进行编辑时,需要对每个像素进行处理。
      • 矢量图:由于矢量图使用数学公式来定义图像,因此可以轻松地修改、调整和编辑各个元素。
    • 应用领域:
      • 位图:位图常用于表达照片、实际场景和复杂的图像,如数字照片、位图图标等。
      • 矢量图:矢量图常用于需要无损缩放和编辑的图像,如图标、徽标、插图等。
        综上所述,位图适用于表达真实场景和细节丰富的图像,而矢量图适用于需要无损缩放和编辑的图像。选择使用哪种图像格式取决于具体的应用需求和使用场景。
R语言中,我们经常需要保存生成的图像,并确保其具有特定的dpi(每英寸点数)值。在本文中,我将向您介绍如何使用R语言保存图像,并设定特定的dpi值。通过这种方法,您可以方便地保存图像,并确保其具有所需的dpi值。执行完上述代码后,您将在当前工作目录下找到一个名为"plot.png"的图像文件,其dpi值为300。通过使用R语言中的相应函数,您可以轻松地保存图像,并设置特定的dpi值。您可以根据需要选择合适的函数来保存图像,并设置相应的dpi值。值得注意的是,R语言还提供了其他保存图像的函数,例如。 JPG文件:JPG是有损图片的压缩类型,有损压缩方式去除冗余的图像和彩色数据,获取得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像质量。首先R目前是没法直接输出.cdr格式的文件的,根据网上的经验就是用emf这个格式,能够输出Corel Draw能读取的矢量文件,导入后再做些微调。但是通过这样的方法,有些图片会损失一些信息,如我这张图片的可信区间就看不见了,没有可信区间的图片肯定是不合格的。device:Windows设备的设备编号,默认为当前设备,这个参数。 写此文,仅为纪念写论文时那些掉帧的图片。作为一个单纯想毕业的论文小白,对图片的要求也不是很高,仅仅是想让图片看起来不那么模糊。关键信息不被覆盖而已。但是就是那么一点需求都不能满足我。不过最终,历经坎坷也是找到了解决方法。本文从R语言、word、pdf三个方面来讲述我踩过的坑。 最为本科统计学的专业的我,本次论文作图软件使用的是R语言中的ggplot2包中的函数。像保存图片... 无论是使用graphics包、grDevices包还是ggplot2包,R语言都提供了保存高分辨率图像的函数和方法。你可以根据自己的需求选择合适的包和函数,设置适当的参数来保存高分辨率图像。在R语言中,绘制出的图形可以保存为高分辨率的图像文件,以便于打印、出版或在其他媒体上使用。R提供了多种保存图像的函数和扩展包,常用的包括graphics、grDevices和ggplot2。grDevices包提供了更多的图像保存选项,包括保存为PDF、EPS和SVG等格式。参数指定图像的宽度和高度(以英寸为单位), 之前写的博客中有提及过如何在 R 语言中绘制矢量图,然后用于论文引用。但没有专门开一篇博客来进行说明比较,这里重新开一篇博客来进行说明。 通常保存为矢量图可能大多数时候是为了论文中的引用,所以格式一般为 EPS, PDF 这两种格式,这里也主要针对这两种格式进行说明。 1. R 中自带的默认绘图 通常我们使用 plot(), lines(), points(), hist() 等一些 R 中自带... jpeg(file = "style.jpg") ##在当前目录下创建图片 plot(iris[,1],col="red") ## 画图程序 dev.off() ##只有dev.off()结尾才可以把图片保存出去。 2.图片尺寸调整输出 p.picture=paste(a,"test.jpg") jpeg(p.picture,width=1200,height=600) a=plot(iris[,1],col="red") print(a) dev.off() 3.图片文件 我在 R 中使用 ggplot 创建散点图。我想将图表保存为 300 DPI 的 tiff 图像,以便将其发布在期刊中。res=300指定您需要分辨率为 300 dpi 的图形。名为“test.tiff”的图形文件保存在您的工作目录中。根据所需的输出更改上面代码中的width和。 ggsave()欢迎关注微信公众号(医学生物信息学),医学生的生信笔记,记录学习过程。常见图片的格式包括:pdf,jpeg,tiff,png,svg,wmf。pdf,svg和wmf为矢量图格式,放大图片时不会出现模糊。jpeg,tiff和png为位图格式,调整文件大小时会出现模糊。ggsave() SCI论文一般都需要高分辨率的图片,最好是那种可以自由拖动的矢量图,但是Rstudio自己生成的tif格式的图片图像质量都很差,不能满足论文要求。目前通常一些做法是先保存为ESP这种矢量图格式,再通过Adobe Illustrator软件来编辑保存,转换格式 但是通过这样的方法,有些图片会损失一些信息,如我这张图片的可信区间就看不见了,没有可信区间的图片肯定是不合格的。 我们还可以通过保存为PDF格式来解决这个办法,做出高清没有损失的图片。 我们先把图片保存为PDF格式 然后通过AdobePhotos R语言有两大主要功能,绘图和统计,R的绘图功能是很强大的,在R里绘制好图形后常常需要输出图形。 图形常见的格式有位图和矢量图,位图又包括TIFF、BMP、JPEG、PNG等;矢量图包括PDF、VMF、SVG等。 今天就来学习R中怎么导出常见的位图和矢量图形。 1. 导出位图 保存图形时,将绘图代码放在开启目标图形设备的语句和关闭目标图形设备的语句之间即可。 tiff("mygraph.tiff")#开启目标图形设备 plot(mtcars$wt,mtcars$mpg)#绘图代...