`
vase
  • 浏览: 421221 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于R在Linux服务器上生成图片中文乱码原因及解决办法

 
阅读更多

乱码原因:

    主要是因为Linux没有对应字体库导致。Linux本身自带字体库(具体有啥,暂不深究),但不包含windows上的,尤其像“微软雅 黑”这样的字体库(主因应该是版权问题);所以在Windows开发R程序,在设置字体后(如“宋体”、“黑体”、“微软雅黑”),在Linux上是无法 显示的。

 

解决办法:

    以CentOS为例,其他版本请自行对照相应路径

1. 在/usr/share/fonts下新建一个微软字体文件夹,如msfonts

2. 将windows系统盘下fonts中的MSYHBD.TTF 、MSYH.TTF 、simhei.ttf 、simsun.ttc 拷贝到linux上步骤1新建的文件夹/usr/share/fonts/msfonts下

3. 修改/etc/fonts/fonts.conf,在<dir>/usr/share/fonts</dir>后增加<dir>/usr/share/fonts/msfonts</dir>,如下

<!-- Font directory list -->
    <dir>/usr/share/fonts</dir>
    <dir>/usr/share/fonts/msfonts</dir>
    <dir>/usr/share/X11/fonts/Type1</dir> <dir>/usr/share/X11/fonts/OTF</dir>
    <dir>~/.fonts</dir>

 

4. 执行fc-cache -f 使得新加的字体立即生效。

5. 修改R程序,在加载Cairo后,设置字体

# 加载Cairo库
library(Cairo)
# 设置字体
CairoFonts(regular = "宋体:style=Regular", bold="微软雅黑:style=Regular")
# 其他画图代码,balabala...

 经测试,只设置第一个参数regular 不起作用,使用的是第二个参数bold的设置,原因不明;其中冒号“:”分隔符后边的style表示使用的样式,Regular正常 Bold粗体

 

关于字体大小是在CairoPNG函数中的pointsize参数设置

CairoPNG(filename = "Rplot.png", width = 480, height = 480, pointsize = 12, bg = "white", res = NA, ...)

 

最后附上Cairo API。

 

另外再补充一句:关于windows上使用UTF-8字符集乱码问题,如果系统默认是GBK字符集,这个问题应该 无解,原因是R运行时环境无法指定字符集。除非用icon函数进行转码,但是这样写的代码没法跨平台执行了。至于更改windows操作系统字符集,或许可以,未测;若有人成功,请给出方案

分享到:
评论

相关推荐

    jfreechart部署linux服务器生成图片乱码解决方案

    标题 "jfreechart部署在Linux服务器上生成图片乱码的解决方案" 涉及到的主要知识点是关于Java图形库JFreeChart在Linux环境中的使用,特别是解决中文字符乱码的问题。JFreeChart是一个广泛使用的开源Java库,它允许...

    linux下java生成图片乱码问题.doc

    总之,解决Linux下Java生成图片中文乱码问题的关键在于确保系统中有合适的中文字体,并使Java应用程序能够正确访问这些字体。通过安装fontconfig和相应的中文支持包,以及重启服务,可以有效地解决这一问题。在实际...

    jfreechart Linux服务器图片中文乱码解决方案(亲测,已解决多台服务器)

    通过以上步骤,你应该能够成功解决JFreeChart在Linux服务器上生成图片时的中文乱码问题。值得注意的是,这种方法不仅适用于JFreeChart,还适用于其他依赖于Java运行环境显示中文字符的程序。在实际操作中,应根据...

    处理linux java图片中文字显示方块乱码

    java——图片字体显示方块问题处理 /usr/java/jdk1.7.0_80/jre/lib/fonts/fallback msyhbd.ttf msyh.ttf wqy-microhei.ttf /usr/java/jdk1.7.0_80/lib/fonts/fallback msyhbd.ttf msyh.ttf wqy-microhei.ttf

    合成图片上用 java Graphics2d 写字 本地展示正常 linux 服务器乱码 解决方案-附件资源

    合成图片上用 java Graphics2d 写字 本地展示正常 linux 服务器乱码 解决方案-附件资源

    Linux php 中文乱码的快速解决方法

    在Linux环境下,PHP处理中文字符时可能会遇到乱码问题,这主要是由于字符编码设置不正确导致的。本文将详细介绍如何快速解决Linux PHP中文乱码的问题,以Ubuntu系统为例。 首先,我们需要理解字符编码的基础知识。...

    jira-front.rar 解决jira乱码

    然而,有时候用户会遇到一些技术难题,比如在你提到的"jira-front.rar 解决jira乱码"的问题中,Jira在显示中文字符时遇到了困扰。这个问题涉及到字体渲染和国际化支持,下面我们将深入探讨这个问题的解决方案以及...

    phantomjs-2.1.1.zip

    这个压缩包“phantomjs-2.1.1.zip”包含了PhantomJS的安装包以及解决在生成图片时可能出现中文显示问题的字体包。 在使用PhantomJS的过程中,我们首先需要解压缩这个zip文件。文件"phantomjs-2.1.1-linux-x86_64....

    mxGraph插件,java代码xml导出成图片

    解决方法是在服务器上安装必要的中文字体,或者在jGraphX的渲染过程中指定可用的中文字体。 总的来说,实现这个功能需要对前端的mxGraph和后端的jGraphX有深入的理解,以及处理XML和图片转换的技巧。解决上述问题...

    pd4ml技术html导出pdf,支持中文,兼容Linux

    PD4ML能够在Linux环境下运行,这意味着开发者可以利用Linux服务器的强大性能和稳定性来生成PDF。Linux的开源特性与PD4ML的开源精神相吻合,两者结合可以为开发者提供一个低成本、高效能的解决方案。 5. **...

    php使用Imagick生成图片的方法

    在PHP开发中,有时我们需要动态生成图片,例如创建自定义的logo、生成图表或添加水印等。Imagick是一个强大的图像处理库,它提供了在PHP中操作图像的各种功能,包括创建、编辑和合成图像。在本文中,我们将探讨如何...

    Linux中文字体包语言包

    Linux部署的Java应用生成图片会出现乱码,将文件解压至 /usr/share/fonts 目录下,依次执行 mkfontscale 、mkfontdir 、fc-cache 使字体生效,如果不生效则重启服务器或执行source /etc/profile 如果提示没有...

    phantomjs 需要的 js 插件 echarts-convert.js

    同时,由于ECharts和PhantomJS都是跨平台的,因此这个解决方案不仅限于Linux服务器,也可以在Windows或macOS等环境下运行。 为了使用`echarts-convert.js`,你需要先确保安装了PhantomJS,然后将`echarts.js`和`...

    Dede后台验证码不显示三种解决方案

    ### Dede后台验证码不显示三种解决方案 #### 概述 在使用DedeCMS(织梦内容管理系统)的过程中,用户可能会遇到后台登录时验证码不显示的问题。这种情况不仅影响用户体验,还可能导致无法正常登录后台进行管理操作...

    PHP语言教程.zip及相关案例

    2. **服务器端处理**:PHP代码在服务器端运行,生成HTML并发送到客户端,提供动态网页内容。 3. **数据库集成**:PHP支持多种数据库,如MySQL、PostgreSQL、SQLite等,方便进行数据操作和管理。 4. **开源**:PHP...

    KODExplorer 芒果云-资源管理器

    - 图片缩略图生成:小于5k则不生成(直接输出) - 加载文件列表改为异步方式,数据返回采用回调函数方式。增强体验 - 选中优化,文件&文件夹重命名、文件&文件夹新建 后自动选中。(f5增加回调。); - 选中保持,...

    FengCms 网站内容管理系统 v1.32 Beta.zip

    4、新增 web.config 文件,用于 windows 2008 以及以上系统的伪静态配置(需要服务器支持)我们建议系统运行于linux服务器上。 FengCms系统介绍 FengCms系统是由地方网络工作室倾力打造的一套PHP MYSQL的CMS,和...

    jsp入门教程

    - **图片校验码-JSP版**:通过JSP生成验证码图片的方法。 #### 第13章 剖析EL表达式 - **再谈EL(Expression Language)**:深入理解EL表达式的概念及其在JSP中的应用。 - **作用域**:回顾JSP中不同作用域的使用...

Global site tag (gtag.js) - Google Analytics