欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

在使用R语言的ggplot2库制作图表时,若图例中的文字标签包含罗马数字,你该如何将其导出为PDF格式呢?

最编程 2024-07-29 17:22:06
...

之前使用ggplot2作图遇到的问题,如果图片中的文本包含罗马字符,输出为pdf的时候就显示不出来

简单的代码

library(ggplot2)
ggplot()+
  #geom_point(aes(x=1,y=1))+
  geom_text(aes(x=1,y=1),label="\u0251",size=10)+
  geom_text(aes(x=1.5,y=1.5),label="α",size=10)+
  geom_text(aes(x=1.2,y=1.2),label="Ⅰ",size=10)
image.png

Rstudio里显示是正常的,导出为pdf格式的时候

image.png

罗马数字就是显示不出来

windows10 下的字符映射表

win+R快捷键 输入 charmap

image.png

今天发现了解决办法,今天的推文在这里介绍给大家

首先这个字符映射表也是分字体的

image.png

比如这个Arial字体下就找不到罗马数字的内容,需要到 Times New Roman字体下才能找到罗马数字

image.png
image.png

所以使用Rstudio,用ggplot2作图的时候如果问题标签里含有罗马数字,我们必须制定文本的字体是Times New Roman,R语言里对应的字体代码是serif

比如以下代码

library(ggplot2)  

ggplot()+
  geom_point(aes(x=1,y=1),size=5)+
  geom_text(aes(x=1.1,y=1.1),label="\u2160",
            size=10)+
  geom_text(aes(x=1.2,y=1.2),label="\u216B",
            size=10,
            family="serif")

两个文本标签,一个制定字体,另外一个不指定

导出为pdf文件以后制定字体的就可以显示正常

image.png

这个显示不正常的也可以通过手动修改字体的形式让他显示正常

image.png

你也可以试下如下的代码

library(ggplot2)  

dat<-data.frame(label=c("\u2160","\u2161","\u2162","\u2163",
                        "\u2164","\u2165","\u2166","\u2167",
                        "\u2168","\u2169","\u216A","\u216B",
                        "\u216C","\u216D","\u216E","\u216F"),
                x=1:16,
                y=1,
                y1=2)

pdf(file = "abc.pdf",width = 8,height = 4,
    family = "serif")
ggplot(data=dat)+
  #geom_point(aes(x=1,y=1),size=5)+
  geom_text(aes(x=x,y=y,label=label),size=10)+
  geom_text(aes(x=x,y=y1,label=label),size=10,family="serif")
dev.off()

grDevices::cairo_pdf(filename = "abc2.pdf",
                     width = 8,
                     height = 4,
                     family = "serif")
ggplot(data=dat)+
  #geom_point(aes(x=1,y=1),size=5)+
  geom_text(aes(x=x,y=y,label=label),size=10)+
  geom_text(aes(x=x,y=y1,label=label),size=10,family="serif")
dev.off()

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

推荐阅读