前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言ggplot2作图如果文字标签包含罗马数字,如何输出pdf呢?

R语言ggplot2作图如果文字标签包含罗马数字,如何输出pdf呢?

作者头像
用户7010445
发布2022-04-08 13:41:35
1.4K0
发布2022-04-08 13:41:35
举报
文章被收录于专栏:小明的数据分析笔记本

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

简单的代码

代码语言:javascript
复制
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

比如以下代码

代码语言:javascript
复制
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

你也可以试下如下的代码

代码语言:javascript
复制
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()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档