在 R 中的轴标签中绘制表情符号/自定义图像

2024-05-01

我正在尝试在 R 中绘制表情符号和自定义图像作为 X 轴的标签。 我读过类似的帖子并且问题 https://stackoverflow.com/questions/47730589/plot-emojis-emoticons-in-r-with-ggplot,但我不想在 R 中使用 emojifont,而是使用我自己的图像作为标签 (.png),并且大约有 270 个这样的自定义表情符号。

我跟着本文 https://prismoji.com/2017/02/06/emoji-data-science-in-r-tutorial/并设法在栏顶部显示表情符号,但我希望将表情符号作为标签。类似于此图像。

我想到的唯一解决方案是将 mapply (df.plot$dens) 中的密度值更改为 1,在此代码中:

...
mapply(function(x, y, i) {
          annotation_custom(g[[i]], xmin = x-0.5*df.plot$xsize[i], xmax = x+0.5*df.plot$xsize[i], 
                            ymin = y-0.5*df.plot$ysize[i], ymax = y+0.5*df.plot$ysize[i])},
          df.plot$rank, df.plot$dens, seq_len(nrow(df.plot)))
...

因此,代码是:

g1 <- ggplot(data = df.plot, aes(x = rank, y = dens)) +
  geom_bar(stat = 'identity', fill = 'dodgerblue4') +
  xlab(xlab) + ylab(ylab) +
  mapply(function(x, y, i) {
    annotation_custom(g[[i]], xmin = x-0.5*df.plot$xsize[i], xmax = x+0.5*df.plot$xsize[i], 
                      ymin = y-0.5*df.plot$ysize[i], ymax = y+0.5*df.plot$ysize[i])},
    df.plot$rank, 1, seq_len(nrow(df.plot))) +
  scale_x_continuous(expand = c(0, 0), breaks = seq(1, nrow(df.plot), 1), labels = seq(1, nrow(df.plot), 1)) +
  scale_y_continuous(expand = c(0, 0), limits = c(0, 1.10 * max(df.plot$dens))) +
  theme(panel.grid.minor.y = element_blank(),
        axis.title.x = element_text(size = 10), axis.title.y = element_text(size = 14), 
        axis.text.x  = element_text(size = 8, colour = 'black'), axis.text.y  = element_text(size = 8, colour = 'black'));
g1;

and the results is : enter image description here

在 R 中是否可以使用 .png 作为标签而不是文本或 emojifont?

至于数据,我有:

 df.plot

   description                         n  dens  rank xsize ysize
   <fct>                           <int> <dbl> <dbl> <dbl> <dbl>
 1 crying face                      1207   1.5     8  9.62  7.22
 2 double exclamation mark          1326   1.6     7  9.62  7.22
 3 face with tears of joy          39122  48.1     1  9.62  7.22
 4 grinning face                     871   1.1    10  9.62  7.22
 5 grinning face with smiling eyes  1872   2.3     4  9.62  7.22
 6 hugging face                     1401   1.7     6  9.62  7.22
 7 hundred points                   2998   3.7     3  9.62  7.22
 8 loudly crying face              13375  16.4     2  9.62  7.22
 9 party popper                     1522   1.9     5  9.62  7.22
10 tired face                        974   1.2     9  9.62  7.22

g 指的是图像:

imgs <- lapply(paste0(df.plot$description, '.png'), png::readPNG); 
g <- lapply(imgs, grid::rasterGrob);

我找到了解决方案。 类似问题的答案在照片与 r 中的图形对齐 https://stackoverflow.com/questions/14070953/photo-alignment-with-graph-in-r/14078391 and here https://jcarroll.com.au/2016/06/03/images-as-x-axis-labels-updated/.

我们需要创建一个函数

my_axis = function(img) {
  structure(
    list(img=img),
    class = c("element_custom","element_blank", "element") # inheritance test workaround
  )
}

为了使它看起来更好我建议使用 rot=45 来旋转标签

   element_grob.element_custom <- function(element, x,...)  {
  stopifnot(length(x) == length(element$img))
  tag <- names(element$img)

  # add vertical padding to leave space
  g1 <- textGrob(paste0(tag, "\n\n\n\n\n"), x=x, vjust=0.6,rot = 45)
  g2 <- mapply(rasterGrob, x=x, image=element$img[tag], 
               MoreArgs=list(vjust=0.6, interpolate=FALSE,
                             height=unit(3,"lines")),
               SIMPLIFY=FALSE)
  gTree(children=do.call(gList, c(g2, list(g1))), cl="custom_axis")
}

然后调用它:

gg <- gg + theme(axis.text.x  = my_axis(pics),
                 axis.text.y  = element_text(size=14),
                 axis.title.x = element_blank())

输出 :

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

在 R 中的轴标签中绘制表情符号/自定义图像 的相关文章

  • 再现频率矩阵图

    我想在 R 中重新创建一个情节 情节如下 来源 Boring E G 1941 作为动态平衡的统计频率 心理学评论 48 4 279 这略高于我的工资等级 能力 因此在这里询问 无聊的状态 第一次 A 只能出现 从不 0 或 总是 1 在
  • grid.arrange 中的错误 -rangeGrob() 函数

    我有两个图 p1 和 p2 我试图使用 grid arrage 绘制它们 我的代码如下所示 grid arrange p1 p2 ncol 2 top textGrob Distribution across each day of the
  • 如果条件长度 > 1 并且仅使用第一个元素,为什么我会在 R 中收到此警告

    我有下面的源代码 这if is na monthData 用于检查是否monthData is NA 如果是 则为其分配一个初始值 monthData lt NA if category QUARTER for m in c rep 1 4
  • 获取所有矩阵列逐元素乘积对的快速方法

    假设我有一个数字matrix set seed 1 mat lt matrix rnorm 1000 ncol 100 我想生成所有向量 它们是中所有唯一向量对的逐元素乘积的结果mat 我们如何改进下面的代码 all pairs lt t
  • R:如何根据规范更改数据框中的列名称

    我有一个数据框 它的开头如下 SM H1455 SM V1456 SM K1457 SM X1461 SM K1462 ENSG00000000419 8 290 270 314 364 240 ENSG00000000457 8 252
  • R-在多个图的外缘绘制居中图例

    我想在具有多个绘图的设备中的绘图区域之外绘制居中图例 SO 中提出了许多关于更改 R 图中图例位置的问题 略有不同 例如 1 R 组合图的通用标题和图例 https stackoverflow com questions 8736966 r
  • 使用 R 从字符串中提取函数参数

    最好使用stringr包 我想创建一个函数extract 以字符串向量作为参数 vec lt c div span icon hospital user i18n t Enrolments or i18n t Paper a string
  • 在ggplotly散点图中添加自定义数据标签

    我想显示Species对于每个数据点 当光标位于该点上方而不是 x 和 y 值时 我用iris数据集 另外 我希望能够单击数据点以使标签持久存在 并且当我在图中选择新位置时标签不会消失 如果可能的话 最基本的是标签 持久性问题是一个优点 这
  • 从 R 到 C 处理列表并访问它

    我想使用从 R 获得的 C 列表 我意识到这个问题与此非常相似 使用 call 在 R 和 C 之间传递数据帧 https stackoverflow com questions 6658168 passing a data frame f
  • 将天气 iframe 嵌入到 Shiny Dashboard 中

    我正在尝试将 Forecast io 的天气预报嵌入到闪亮的仪表板中 我最初在使用 符号时遇到了麻烦 但看到一篇文章提供了如何使用特殊字符格式化 HTML 代码的示例 但是 当我运行该应用程序时 我看到一个简单的 未找到 即使我知道该链接有
  • R:为什么 boxplot(x,log="y") 与 boxplot(log(x)) 不同?

    delme lt exp rnorm 1000 1 5 0 3 boxplot delme log y boxplot log10 delme 为什么这两个图中的胡须不同 谢谢 阿古斯 我想说的是 在您的第一个图中 您只是将 y 轴更改为对
  • R:根据元素长度从向量中删除元素

    如何根据字符串的字符数或长度从字符串向量中删除元素 df lt c asdf fweafewwf af aewfawefwef awefWEfawefawef gt df 1 asdf fweafewwf af aewfawefwef aw
  • 如何在 R 中为回归量创建“宏”?

    对于长且重复的模型 我想创建一个 宏 在 Stata 中称为 宏 并通过以下命令完成 global var1 var2 其中包含回归量的模型公式 例如来自 library car lm income education prestige d
  • Django 中的 Rpy2 错误 - 未为“”类型的对象定义转换“py2rpy”

    我以前从未使用过 R 并且正在尝试使用 rpy2 从 python 调用 R 函数 它可以在独立的 python 终端上运行 但不能在 Django 中运行 但rpy2似乎无法将python字符串转换为r对象 我正在使用同事提供的自定义库
  • 回归时如何设置系数值;右

    我正在寻找一种指定预测变量值的方法 当我使用当前数据运行 glm 时 其中一个变量的系数接近 1 我想将其设置为 0 8 我知道这会给我一个较低的 R 2 值 但我先验地知道模型的预测能力会更大 glm 的权重组件看起来很有希望 但我还没有
  • 在 Shiny 中叠加两个 ggplot

    我有一个非常大的数据集 我正在使用 ggplot 在 Shiny 上绘制它 我有一个与 x 轴上的值相关联的滑块 我想用它对选定的数据子集重新着色 并让其余数据保持原样 最简单的选择是重新创建整个绘图 但由于它是一个大型数据集 因此这是一个
  • 将日期时间字符串转换为 Date 类

    我有一个带有日期时间字符列的数据框 当我使用as Date 除了少数实例之外 我的大多数字符串都被正确解析 下面的示例有望向您展示发生了什么 my attempt to parse the string to Date uses the s
  • ggplot 图例标签内的希腊字母、符号和换行符

    我在尝试着 有换行符 自动或强制 对齐文本 左对齐或左右对齐 有希腊字母和百分号 在 gglot 图例标签内 我尝试了几种方法 但我似乎无法将我读到的所有技巧结合起来 我可以通过插入来换行 n进入标签 但这似乎不适用于希腊字母 不适用于图例
  • R闪亮主面板显示样式和字体

    我正在学习闪亮的应用程序 并且有一些关于调整布局的基本问题 特别是样式和字体 希望得到指点或明确的答案 谢谢 考虑一个基本的输入输出应用程序 用户在 sidebarPanel 中输入数据 然后在 mainPanel 中反应性地输出结果 如何
  • R闪亮:使用闪亮的JS从数据表中获取信息

    我想读出所有列名称以及它们在数据表中显示的顺序 由于不同的原因 我无法使用 stateSave 等选项 我对 JS 没有什么把握 但我确信用它可以完成 所以我需要你帮助我 我尝试过类似的代码片段 datatable data callbac

随机推荐

  • 为什么MongoDB不同的查询计划显示不同的nReturned值?

    我有一个收藏faults in my MongoDB每个文档都有这些字段的数据库 rack name timestamp 只是为了测试和比较性能 我创建了这两个索引 rack gt rack name 1 and time gt times
  • ckan本地安装,solr JSP支持未配置500错误

    我正在尝试使用 Ubuntu 14 04 LTS 在本地计算机上安装 CKAN 我按照从找到的源安装的说明进行操作here http docs ckan org en latest maintaining installing instal
  • 如何更改 VS Code 中的当前工作目录?

    如何更改 VS Code 中的当前工作目录 比方说 我有一个名为 apps 的父文件夹 其中有一个名为 MyBeautifulApp 的子文件夹 我使用 vscode 打开了 apps 文件夹 我应该在命令行上运行什么命令不仅cd进入 My
  • 新的 GKE 集群记录了数千个错误

    在 Google Kubernetes Engine 中创建全新的 Kubernetes 集群后 我在 Google Cloud 日志记录中看到许多与指标代理相关的错误 我在版本上的现有集群上遇到了这个问题1 18 x 然后我升级到1 19
  • 通过使用 AWS-SDK PHP 生成的预签名帖子拒绝 AWS S3 上传访问

    我正在尝试使用 AWS SDK PHP 生成的预签名帖子将文件 用于测试的图像 上传到我的 s3 存储桶 首先我生成预签名的帖子 然后我使用 Postman 或通过简单的 html 表单使用给定的 PostObjectV4 数据手动创建请求
  • 在 swift for iOS 中以编程方式设置图像的拉伸参数

    因此 如果我们只想拉伸图像的一部分 无论是常规图像还是背景图像 我们在布局编辑器中使用以下设置 您如何以编程方式设置这些 我正在使用 Xcode 7 2 1 指定图像的上限插图 您可以通过使用来设置拉伸细节UIImage method re
  • 使用 anaconda3 python 3.5 安装 Tensorflow 出现“读取超时错误”

    我正在尝试安装tensorflow gpu 使用python3 6和anaconda 3 我正在按照以下链接中的安装步骤进行操作https www tensorflow org install install windows https w
  • 如何更改 localStorage 项中的单个值?

    我正在尝试更改本地存储中的值 此项是复选框的状态 我希望 每次选中复选框时都将该复选框的值设置为 true 或 false 我尝试了很多方法 直到我意识到不使用 JSON 就无法更改值 要添加我使用的值 localStorage setIt
  • Google 地图:挪威邮政编码未返回任何结果

    简而言之 我们有一些挪威邮政编码 并正在使用 API 来获取它们的地址以及经纬度 没什么高雅的 但在大约 10 的邮政编码上 API 不返回任何结果 下面是一个示例 成功为postal code 1151 http maps googlea
  • 具有 C++ 客户端和 C# 后端的协议缓冲区?

    如何通过 HTTP 或等效的 Web 服务将 C 后端与 C 前端连接起来 这里分为三个部分 服务器 听起来像 C 客户端 听起来像 C 和传输 将它们分开 并从最重要的开始 传输 这里的重大决定是您希望数据采用什么形状 您提到了协议缓冲区
  • Ripple 模拟器不会触发事件

    我安装了最新的 Ripple 模拟器 Chrome 商店中提供的最新版本 除了事件之外 一切正常 他们都没有火灾 不仅deviceready就像其他一些堆栈溢出问题一样 没有 既不手动 使用Events窗格 也不会自动 deviceread
  • org.gradle.api.tasks.TaskExecutionException:任务':app:transformClassesWithDexForDebug'执行失败

    Due to 65K我的项目中出现错误 我需要它迁移到 Android Studio 在跑步的时候 gradlew assemble调试 我收到错误 Execution failed for task app transformClasse
  • 何时在 SQL 语句中使用单引号?

    我知道当我处理 TEXT 类型的数据时应该使用它 我猜是那些回退到 TEXT 的数据 但这是唯一的情况吗 Example UPDATE names SET name Mike WHERE id 3 我正在用 C 编写 SQL 查询自动生成
  • 我可以使用什么 C++ 库在 Windows 上将 PDF 转换为图像?

    我正在开展一个需要分析图像的项目 这些图像的主要来源是网络摄像头 但最近我们被要求添加对上传文件和扫描仪的支持 这在大多数情况下都很好 只是他们希望我们能够使用 PDF 格式的文档 我需要一个原始像素位图进行处理 在 Mac 上 我可以使用
  • 如何从指纹扫描仪获取输入并保存[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在使用 Android Marshmallow 和 Moto G4 以及一台设备进行测试 我想创建一个应用程序 它将接受指纹输入并
  • bet365 网站上 Selenium 的 Chrome 驱动程序陷入灰屏

    当我尝试使用 Chrome 驱动程序和 Selenium 打开 bet365 网站时出现灰屏 var driver new ChromeDriver driver Navigate GoToUrl https www bet365 it 我
  • 如何构建具有多个子站点地图的站点地图?

    我在用 MVC4 MvcSiteMapProvider v3 2 1 需要能够升级到v4 我的问题是应用程序很大 我想模块化应用程序并使模块可插拔 由于站点地图已经很大 我想让站点地图也变得可插拔 有没有办法在应用程序启动时使用根站点地图从
  • 使用 Android 手机在空中绘画

    我正在开发一个用 Android 手机在空中画画的应用程序 当我的手机移动时 借助加速度计 我检索了每个轴 ax ay az 上的加速度 我感兴趣的是 x y z 根据我在论坛和一些教程中读到的内容 两次积分加速会产生巨大的错误 那么 对于
  • WCF WebGetAttribute 与 WebInvokeAttribute

    WebGetAttribute 只是 Method GET 的 WebInvokeAttribute 的语法糖吗 或者有根本的区别吗 您立即观察到 WebGet 和 WebInvoke 非常相似 这与事实相差不远 正如您已经说过的 WebG
  • 在 R 中的轴标签中绘制表情符号/自定义图像

    我正在尝试在 R 中绘制表情符号和自定义图像作为 X 轴的标签 我读过类似的帖子并且问题 https stackoverflow com questions 47730589 plot emojis emoticons in r with