导出为 pdf 在 ggplot2 中无法正确显示

2024-04-20

我有一个由 Fig_NPK 和 Barchart_fert 组成的复杂图形 P,它们是使用数据表“Fert”制作的,列包括“Vil”、“N”、“P”和“K”。我的目标是创建一个pdf文件并使用ghostscript在pdf文件中嵌入“Times New Roman”字体系列。当我使用 ggsave 将“P”导出到 pdf 文件时,它无法正确显示。使用的代码是:

library(extrafont)
library(ggplot2)

附图,以Fig_N为例(Fig_N、P、K组成Fig_NPK)

Fig_N<-ggplot(aes(y = N, x = factor(Vil)), data = Total_fac[which(Total_fac$N<quantile(Total_fac$N,0.95)&Total_fac$N>quantile(Total_fac$N,0.05)),])+stat_boxplot(geom ="errorbar") + geom_boxplot() +ggtitle("N requirement")+labs(x="Village",y="Amount used (kg)") +theme(text=element_text(family="Times New Roman", face="plain", size=14))
Fig_NPK<-plot_grid(Fig_N,Fig_P,Fig_K, nrow=3,align = "v")
Barchart_fert<-ggplot(Fert, aes(x=Village, y=Amount, fill=Fertilizer)) + geom_bar(stat = "identity", width=0.4)+ggtitle("Fertilizer usage")+ylab("Amount used (kg)")+theme(axis.text.x=element_text(vjust = 0.5))+scale_fill_discrete(name="Fertilizer type", breaks=c("N-Eq.", "P2O5-Eq.", "K2O-Eq."),labels=c("N Eq.", expression('P'[2]*'O'[5]~~Eq.), expression('K'[2]*'O'~~Eq.)), c=60, l=80)+theme(text=element_text(family="Times New Roman", face="plain", size=14))
P<-ggdraw() + draw_plot(Fig_NPK,0,0,.4,1)+draw_plot(Barchart_fert,.4,0,.6,1) + draw_plot_label(c("A", "B"), c(0,.4), c(1,1), size=14)
ggsave("FigP.pdf", plot=P, width=5, height=5)

ggsave后的错误消息:

Error in grid.Call.graphics(L_text, as.graphicsAnnot(x$label), x$x, x$y,  : Metric information not available for this family/device In addition: There were 50 or more warnings (use warnings() to see the first 50)

生成的 pdf 文件不完整。当我尝试将“P”导出到 postscript 文件时,也会发生同样的情况。我一直在关注有关嵌入字体的帮助文件和其他答案,但似乎无法解决我的问题。


在此找到了解决方案answer https://stackoverflow.com/questions/27542302/ggplot-embedded-fonts-in-pdf?rq=1. Adding

device=cairo_pdf

ggsave 确实解决了在 pdf 和 tiff 文件中不显示正确字体的问题,尽管正如 @user1092247 指出的那样,字距调整似乎很尴尬。如果有人可以完善这个解决方案,并进一步解释问题的实际情况,我仍然会感激不已。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

导出为 pdf 在 ggplot2 中无法正确显示 的相关文章

  • R lubridate:当地语言的工作日

    如何获取本地语言的工作日和月份 My code library lubridate data lt c 10 02 2015 11 03 2015 data lubri lt dmy data wday data lubri label T
  • 从 R 到 C 处理列表并访问它

    我想使用从 R 获得的 C 列表 我意识到这个问题与此非常相似 使用 call 在 R 和 C 之间传递数据帧 https stackoverflow com questions 6658168 passing a data frame f
  • 使用starts_with() 将 NA 替换为 0

    我正在尝试替换我的一组特定列的 NA 值tibble 这些列都以相同的前缀开头 所以我想知道是否有一种简洁的方法来使用starts with 函数从dplyr包可以让我做到这一点 我已经看到了有关 SO 的其他几个问题 但是它们都需要使用特
  • 在 R 中将时间间隔数据扩展为天数

    假设我有如下所示的数据 interval id indiv id role start date end date 1 1 A 2006 05 01 2006 06 16 2 1 B 2006 06 16 2006 10 16 3 1 A
  • 在 mutate 和 across 之后使用 ~separate

    目的是将所有物种 setosa 行转换为一行 setosa 这是一个最小的示例 实际上有更多列和更多组 我有这个数据框 head iris 2 gt select 1 2 5 gt group by Species Sepal Length
  • 使用 data.table 进行分组并选择最短日期

    My Data df1 lt structure list ID c A A A B B C c1 1 6 c2 1 6 myDate c 01 01 2015 02 02 2014 03 01 2014 09 09 2009 10 10
  • 具有动态变量数的公式

    假设有一些 data framefoo data frame想要找到目标列的回归Y由其他一些专栏 为此目的 通常使用一些公式和模型 例如 linear model lt lm Y FACTOR NAME 1 FACTOR NAME 2 fo
  • 连接多个用户的 R 闪亮会话

    最小可重现示例 library shiny ui lt fluidPage actionButton button1 Run 1 actionButton button2 Run 2 server lt function session i
  • 将 RDS 文件从网络(即 URL)直接加载到 R 中?

    read csv 具有直接从 url 读取的出色能力 readRDS 才不是 我想将 RDS 文件从 Internet 移动到我的 R 环境 我看到有几种方法 Method 1 此方法会用下载的文件弄乱工作目录 myurl lt https
  • R texreg:如何选择要显示的 gof 统计信息?

    我正在使用 texreg 通过 plm 生成面板回归的输出表 我想抑制所有 gof 统计数据的输出 这不是显示 R2 adj R2 和 N 我只想显示 adj R2 有谁知道一个简单的方法来做到这一点 好吧 这实际上很简单 只需在调用中包含
  • 将日期时间字符串转换为 Date 类

    我有一个带有日期时间字符列的数据框 当我使用as Date 除了少数实例之外 我的大多数字符串都被正确解析 下面的示例有望向您展示发生了什么 my attempt to parse the string to Date uses the s
  • R:如何找到向量的模式[重复]

    这个问题在这里已经有答案了 下面是我的data frame我想知道每个内存类别 1 到 8 的模式是什么 gt dput d structure list MEMORY1 c 5 5 7 1 5 6 4 5 4 5 5 4 1 5 5 2
  • 将不同的 grViz 组合成一个图

    我想结合不同的DiagrammeR绘制成一个图形 生成的图如下例所示 library DiagrammeR pDia lt grViz digraph boxes and circles a graph statement graph ov
  • 使用自定义渐变填充直方图箱

    我想在 R 和 ggplot2 中创建一个直方图 其中根据连续的 x 值填充箱 大多数教程仅通过离散值或密度 计数进行着色 下列的这个例子 https stackoverflow com questions 40284227 how to
  • 在 R 中导入 csv 文件时如何保留前导零?

    当我写一个 csv来自 R 的文件 其中我的组名称以前导零值开头 前导零被保留 但是当我导入 csv前导零被删除 组名称被转换为整数 当我导入一个组时 如何保留组名称中的前导零 csvR 中的文件 Example df lt data fr
  • 如何在R中匹配具有相同主键的两个表中的数据

    我有两个表 其中包含有关人员的数据 df1 lt data frame id c 113 202 377 288 359 name c Alex Silvia Peter Jack Jonny 这为我提供了 id name 1 113 Al
  • 如何总结此R问题中的销售数量、售出酒类数量和花费金额

    我使用以下代码在 R 上上传我的数据 if file exists ames liquor rds url lt https github com ds202 at ISU materials blob master 03 tidyvers
  • 空间数据xyz到矩阵

    我有一个大数据框 100 000 行 其中包含 LON LAT VALUE 我想将其转换为矩阵 EPSG 中的坐标 3035 我使用以下命令尝试了 reshape2 包 acast df lon lat value var value 效果
  • 在 R 中使用逻辑 grep 抓取文本

    下午好 谢谢你帮我解答这个问题 我有兴趣抓取一组超过 5000 个 URL 的列表 我使用 lapply 和 readLines 使用下面的示例代码提取这些网页的文本 multipleURL lt c http dailymed nlm n
  • 如果条目出现次数少于 x 则删除数据框中的行

    我有以下数据框 称之为 df 它是由三个向量组成的数据框 姓名 年龄 和 邮政编码 df Name Age ZipCode 1 Joe 16 60559 2 Jim 20 60637 3 Bob 64 94127 4 Joe 23 9412

随机推荐

  • Firebase/Android - 通过 UID 加载用户

    我只找到了加载当前登录用户的代码片段 FirebaseUser user FirebaseAuth getInstance getCurrentUser 但是 如果我需要加载其他用户的数据 例如图像路径和名称 怎么办 我想通过它们的 UID
  • 访问设备配置变量

    在我的 Rails 应用程序中 直接从视图访问 Devise 配置变量的方法是什么 我想展示config allow unconfirmed access for来自设计的 confirmable模块 该变量设置在devise rb初始化器
  • 当应用程序进入后台时(之前)iOS 拍摄的屏幕截图?

    希望大家都了解一下iOS在应用程序进入后台之前截取屏幕截图 我从那里得到的官方文件 http developer apple com library ios DOCUMENTATION iPhone Conceptual iPhoneOSP
  • 为什么我不能在 try 块内定义之前使用 Javascript 函数?

    正如所讨论的here https stackoverflow com questions 261599 why can i use a function before its defined in javascript 函数定义可以在定义之
  • 用于复制和重命名文件的 GitHub Action

    有没有一个聪明的方法copy and rename通过 GitHub Actions 文件 我想将一些自述文件复制到 docs文件夹 相同的存储库 而不是远程存储库 它们将根据其 frontmatter 在其中重命名title 目标是拥有某
  • Python-插入ms访问表

    我可以通过某些查询从 ms 访问中获取一些数据 但我无法将数据存储到任何表中 例如 import sys os pyodbc conn str r DRIVER Microsoft Access Driver mdb accdb r DBQ
  • 以编程方式禁用 UIButton 单击时的突出显示

    一定有办法做到这一点 但我找不到 我有一个以编程方式创建的按钮 UIButton button UIButton buttonWithType UIButtonTypeRoundedRect button frame CGRectMake
  • 使用 stargazer 添加一行注释

    我想运行一些回归并使用 stargazer 创建一个表 例如 linear 1 lt lm rating complaints privileges learning raises critical data attitude linear
  • C语言中有“设计模式”吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 升级到 MT 4.0 后不显示索引 TableView

    升级到 MT 4 0 后 以前在右侧边框上显示索引的 TableView 不再工作 表视图仍按部分显示并正常工作 但未显示索引 我在 UITableViewSource 中定义了这三种方法 并且这三种方法似乎都有效 public overr
  • 表更新事件处理程序

    我正在研究 AX 2012 中新委托和事件订阅模式的功能 目前我希望检测特定字段何时被修改 例如何时SalesTable SalesStatus更改为SalesStatus Invoiced 我创建了以下事件后处理程序并附加到 SalesT
  • 如何从 SQLAlchemy 映射对象中发现表属性

    我有一个与表映射的类 在我的例子中是以声明的方式 我想从这个类中 发现 表属性 列 名称 关系 engine create engine sqlite databasePath echo True setting up root class
  • virtualenv ImportError:没有名为 urllib3 的模块

    我在ubuntu上安装了virtualenv 但是 当我尝试创建 virtualenv 时 出现错误 我的 Zenv 文件夹不包含 activate 我该如何修复它 我会经常这样做 这是我第一次收到此错误 ubuntu ip 172 31
  • 从打包序列中获取每个序列的最后一项

    我试图通过 GRU 放置打包和填充的序列 并检索每个序列最后一项的输出 当然我的意思不是 1项目 但实际上是最后一个 未填充的项目 我们预先知道序列的长度 因此应该很容易为每个序列提取length 1 item 我尝试了以下方法 impor
  • 如何获取资产文件夹中图像的字符串路径

    我需要向第三方库传递存储在我的资产文件夹中的图像的路径 我读过一些答案 但没有一个有帮助 我努力了file android asset uk jpg但它不起作用 我需要向第三方库传递存储在我的资产文件夹中的图像的路径 没有路 您的资产不是文
  • 宁静的路线和 Django

    我正在将 Rails 项目迁移到 Django 中 Rails 项目是使用 Restful 路线构建的 它从不接触数据库 相反 它只是重定向到不同的方法 这些方法都使用指定的操作方法调用外部服务 现在 我已经找到了许多 django 框架
  • 渲染 selectManyCheckbox 而不使用 HTML 表

    有没有办法从渲染的html中删除由创建的表格h selectManyCheckbox服务器面孔中的标签 我正在使用 twitter bootstrap 并将复选框放置在下拉菜单中 ul class dropdown menu dropdow
  • Innosetup - 在安装开始之前引用[Code]中的文件

    这是一种延续这个问题 https stackoverflow com questions 5658488 adding a help button to an innosetup wizard page 我想将一个文件包含在我的安装包中 C
  • 在 Swift 中以编程方式创建 UITableViewController

    正如标题所示 我试图以编程方式设置 UITableViewController 经过几个小时的尝试 我希望有人可以帮助我 是的 我已经查看了有关此事的其他帖子 import UIKit class MainViewController UI
  • 导出为 pdf 在 ggplot2 中无法正确显示

    我有一个由 Fig NPK 和 Barchart fert 组成的复杂图形 P 它们是使用数据表 Fert 制作的 列包括 Vil N P 和 K 我的目标是创建一个pdf文件并使用ghostscript在pdf文件中嵌入 Times Ne