什么是Cairo?
官方说法:Cairo is a vector graphics library with cross-device output support
翻译过来就是:Cairo是一个跨平台的开放源代码的矢量图形函数库,可以提供高质量的显示和打印输出。简单来说就是Cairo是一种绘制图形的工具库,它可以提供多种设备的输出。比如:png、pdf、ps、svg等。
今天就在R中简单展示一下利用Cairo进行高质量图形的渲染!
Cairo图形架构最主要的应用场合就是Linux的Gnome桌面环境,如果电脑系统是linux版本,首先可以安装Cairo的基本库libcairo2-dev和libxt-dev。方法如下:
sudo apt-get install libcairo2-dev
sudo apt-get install libxt-dev
随后在Rstudio中安装Cairo包:
install.packages("Cairo")
library(Cairo)
#检查Cairo包在自己的电脑系统下支持的图片格式
Cairo.capabilities()
可以看到,支持png、jpeg、pdf、svg、ps、raster格式的输出,接下来我们拿png作为示例进行展示。
library(ggplot2)
png(filename = "1.png",width = 400,height = 400)
ggplot(data = iris,aes(Sepal.Length,Sepal.Width,colour = Species)) + geom_point()
dev.off()
CairoPNG(filename = "2.png",width = 400,height = 400)
ggplot(data = iris,aes(Sepal.Length,Sepal.Width,colour = Species)) + geom_point()
dev.off()
上下两幅图形有丁点轻微的区别,感觉第二副图形更柔和一些(不知道是不是心理作用)。
n <- 10000
x1 <- matrix(rnorm(n), ncol = 2)
x2 <- matrix(rnorm(n, mean = 3, sd = 1.5), ncol = 2)
x <- rbind(x1, x2)
png(filename = "3.png",width = 500,height = 500)
Lab.palette <- colorRampPalette(c("blue", "orange", "red"), space = "Lab")
smoothScatter(x, colramp = Lab.palette,nrpoints = 250, ret.selection=TRUE,
xlab="",ylab="",axes=F)
dev.off()
CairoPNG(filename = "4.png",width = 500,height = 500)
Lab.palette <- colorRampPalette(c("blue", "orange", "red"), space = "Lab")
smoothScatter(x, colramp = Lab.palette,nrpoints = 250, ret.selection=TRUE,
xlab="",ylab="",axes=F)
dev.off()
上述两幅图形就有了明显的区别,第二幅图形更明亮,渲染的更好看一些。其实,你可以把Cairo看做一个图像处理软件,比如Photoshop?调整图形的颜色、字体等,甚至也可以用这个软件去画出任何图形。
这个问题当时查了很多网页,问了好几个人,最后终于得到答案,比较简单,具体意思就是你忘记关掉什么了,好吧我具体也不懂!但是挺好用。就是你的程序画图完了一定记得加上这个:
1、dev.off()
===================================================
然后你再去打开你的Rplot.pdf 就可以看见图形了。
2、在服务器上想要直接显示图形界面,需要安装一个软件,
library(Cairo)
CairoPNG('test.png') ## 打开画图
plot(graph)## 自定义画图
dev.off()## 关闭画图
我自己的账号上也没试出来,你们可以参考这个试试。
https://blog.csdn.net/snowdroptulip/article/details/78662112
==========================================
3、还有一种方法 安装一个界面软件,这里忘记了,哪天想起再记录吧。
title: "Rfonts"
author: "wintryheart"
date: "2020/7/6"
output:
html_document:
toc: true
toc_depth: 2
number_sections: true
在windows系统中,字体集(the font family)只是一个字符串名字,必须映射到特定的windows字体。
windowsFonts() 函数,用于列出已有的字体映射,或定义新的映射。 windowsFont() 函数用于创建一个新的映射。
系统自带三个字体集名: "serif" 、 "sans" 、 "mono" ,分别映射 "TT Times New Roman" 、 "TT Arial" 、 "TT Courier New" 。
这些映射只有在字体风格(font face)是 1 (plain), 2 (bold), 3 (italic), or 4 (bolditalic) 时使用。
showtext 的主要优点是用户可以使用任何受支持的字体文件进行文本渲染,文本符号将被转换为多边形(用于矢量图形)或光栅图像(用于位图和屏幕图形),从而在所有平台上生成与设备无关的输出。如果您想在图形设备中使用非标准字体,此函数将非常有用。
为了使pdf()更好地显示特定的中文字体,需要调用中文字体文件,比如windows系统自带的 simkai.ttf 。
Cairo初始化一个新的图形设备,使用Cairo图形库进行渲染。当前能制作高质量的PNG、JPEG、TIFF位图文件、具有嵌入式字体的高分辨率PDF文件、SVG图形和PostScript文件。它还提供了X11和Windows交互式图形设备。不像其他设备,它支持所有的图形功能,包括alpha混合,抗锯齿等。
CairoX11()、CairoPNG()、CairoPDF()、CairoPS()和CairoSVG()是Cairo的简易的基本类型包装器,它们使用的参数与所替换的设备(如X11()、png()、pdf()等)相同。
但由于Cairo()更灵活,建议使用Cario()函数。
Cairo.capabilities()查看cairo包支持的所有图形格式。
注:Cairo()输出pdf图形时,必须设置dpi。没有经验,不好设置。在上例中dpi不能大于100。不如直接使用CairPDF()更为方便,不用设置dpi。
注: