在 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 根据事件更新值

    我最近发布了这个问题 该问题已经与我在笔记本电脑上本地使用的 Mysql 数据库相关 由于我在 Mysql 中没有找到问题的解决方案 其他人似乎也没有找到解决方案 所以我想再次发布它 但现在与 R 相关 我使用带有 RMysql 包的数据库
  • ggplot2可以在一个图例中分别控制点大小和线大小(线宽)吗?

    一个使用的例子ggplot2绘制数据点组和连接每组均值的线 并使用相同的映射aes for shape并为linetype p lt ggplot mtcars aes gear mpg shape factor cyl linetype
  • 如何在 ggplot 中保持配色方案,同时删除每个图中未使用的级别?

    我想比较一个图中的数据的一些子组和另一图中的一些其他子组 如果我绘制一个图 其中绘制了所有子组 那么这个数字将是巨大的 并且每个单独的比较都会变得困难 我认为如果给定的子组在所有图中都具有相同的颜色 这对读者来说会更有意义 这是我尝试过的两
  • 如何在for循环中引用变量?

    我正在循环访问不同的 data tables 和 data table 中的变量 但我在引用内部变量时遇到问题for loop dt1 lt data table a1 c 1 2 3 a2 c 4 5 2 dt2 lt data tabl
  • 使用 broom 和 tidyverse 总结 r 平方游戏

    我发布了一个问题here https stackoverflow com questions 48627287 getting adjusted r squared value for each line in a geom smooth
  • 删除ggplot2中的负图区域[重复]

    这个问题在这里已经有答案了 如何删除 ggplot2 中 x 轴和 y 轴下方的绘图区域 请参见下面的示例 我尝试了几个主题元素 panel border panel margin plot margin 但没有任何运气 p lt ggpl
  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使
  • 选择 R 中的数据表中隐藏时(在绿色加号下方)列的显示顺序

    Context 使用 DataTables 库制作交互式表格时 当屏幕宽度对于列的数量和宽度来说太窄时 列将隐藏在绿色 号下 我有一个非常宽的表格 有 20 多列 其中一些内容非常冗长 因此某些列在所有屏幕宽度下总是隐藏的 每次隐藏新列时
  • 将数据框中的每个 x 个字符拆分为字符串

    我知道这里有一些关于每隔一段时间分割一个字符串的答案nth字符 例如this one https stackoverflow com questions 23208490 split each character in r and this
  • 绘制点之间的所有线

    我有以下 R 代码 x lt c 0 01848598 0 08052353 0 06741172 0 11652034 y lt c 0 4177541 0 4042247 0 3964025 0 4074685 d lt data fr
  • 从命令行运行 R 代码 (Windows)

    我在名为 analysis r 的文件中有一些 R 代码 我希望能够从命令行 CMD 运行该文件中的代码 而无需通过 R 终端 并且我还希望能够传递参数并在我的代码中使用这些参数 例如就像下面的伪代码 C gt execute r scri
  • API 请求和curl::curl_fetch_memory(url, handle = handle) 中的错误:SSL 证书问题:证书已过期

    几天前 我运行了代码几个月 没有任何问题 GET url myurl query 今天我遇到一个错误 Error in curl curl fetch memory url handle handle SSL certificate pro
  • Purrr::map_df() 删除 NULL 行

    使用时purrr map df 我偶尔会传递一个数据框列表 其中一些项目是NULL 当我做 map df 返回行数少于原始列表的数据框 我想发生的事情是这样的map df calls dplyr bind rows 它忽略了NULL价值观
  • 以引用透明的方式从函数的省略号参数中提取符号

    事情又发生了 我正要按下发布答案按钮的问题被删除了 我正在寻找一种方法来从函数的省略号参数中提取绑定到符号的对象的值以及符号 也就是说 我试图以引用透明的方式从省略号中提取符号 我尝试过使用替代品和lazy dots 但没有成功 funct
  • 使用 R 选择第一个非 NA 值

    df lt data frame ID c 1 1 1 2 3 3 3 test c NA 5 5 6 4 NA 7 3 NA 10 9 我想创建一个名为 value 的变量 它是每个单独 ID 测试的第一个非 NA 值 对于只有NA的个体
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • 在 R 中使用 lapply 绘制多个数据帧

    我正在尝试使用 lapply 函数绘制多个数据帧 每个数据帧一个图 但是尽管有关此主题的所有帖子我都找不到答案 因为我不断收到错误 图的输出列表为空 我的数据结构如下 df1 lt mtcars gt group by cyl gt tal
  • 只读取选定的列

    谁能告诉我如何仅读取下面每年数据的前 6 个月 7 列 例如使用read table Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2009 41 27 25 31 31 39 2
  • ddply 和aggregate 之间的区别

    有人可以通过以下示例帮助我了解聚合和 ddply 之间的区别 数据框 mydat lt data frame first rpois 10 10 second rpois 10 10 third rpois 10 10 group c re
  • 将阴影区域添加到五分位数之间的直方图中

    All 我有一个包含 2 个直方图的图表 其中我还绘制了代表第 20 40 60 和 80 个百分位数的线条 下面的代码使用虚拟数据重现了类似的图表 data lt rbind data frame x rnorm 1000 0 1 g o

随机推荐

  • 为什么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