在 ggplot2 的图中添加一个指向 x 轴的箭头

2024-02-23

我的目标是获得一个带有指向 x 轴的文本的箭头来标记平均词频。我一生都无法弄清楚如何在 ggplot2 中的绘图区域之外获取箭头或文本。

这是我的代码:

ggplot(SUMMARY.PCTDIFF, aes(principle, pctdiff)) +xlab("Principle")+ylab("% Difference")+
    geom_bar(aes(fill = Sector),position = "dodge", stat="identity",col="black")+
    ggtitle("How Differing Sectors Talk about Different Co-operative Principles")+theme(plot.title=element_text(hjust=0.5),panel.border = element_rect(colour = "black", fill=NA, size=1),legend.background = element_rect(color = "black"),legend.position =c(1.10,0.7),plot.margin=unit(c(0.5,3,0.5,0.5),"cm"))+
    geom_hline(yintercept = 0)

这是我的数据:

structure(list(principle = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 
7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 
3L, 4L, 5L, 6L, 7L), .Label = c("principle 1", "principle 2", 
"principle 3", "principle 4", "principle 5", "principle 6", "principle 7"
), class = "factor"), pctdiff = c(-6.71369900758148, 9.44233503731219, 
11.0107840625484, -53.1259224412594, -9.22356636157099, -41.0142340880256, 
-9.6288000905822, -55.3759198976217, -19.1012386886889, -75.4996296064581, 
-44.7688906852688, -58.5771031808126, 48.9559446961189, 4.52522805921763, 
29.4368505336144, 51.7181015822617, -2.26377179780978, 48.1990295720174, 
57.4736669182075, 8.41689226435695, -15.8983115124042, 30.6261564806236, 
79.5018869249509, 87.2542807992621, -15.3228747516659, 13.5915020818539, 
48.2301858238767), Sector = c("AG", "AG", "AG", "AG", "AG", "AG", 
"AG", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "SERV", 
"SERV", "SERV", "SERV", "SERV", "SERV", "SERV", "OTHER", "OTHER", 
 "OTHER", "OTHER", "OTHER", "OTHER")), .Names = c("principle", 
 "pctdiff", "Sector"), row.names = c(NA, -27L), class = "data.frame")

df <- structure(list(principle = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 
7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 
3L, 4L, 5L, 6L, 7L), .Label = c("principle 1", "principle 2", 
"principle 3", "principle 4", "principle 5", "principle 6", "principle 7"
), class = "factor"), pctdiff = c(-6.71369900758148, 9.44233503731219, 
11.0107840625484, -53.1259224412594, -9.22356636157099, -41.0142340880256, 
-9.6288000905822, -55.3759198976217, -19.1012386886889, -75.4996296064581, 
-44.7688906852688, -58.5771031808126, 48.9559446961189, 4.52522805921763, 
29.4368505336144, 51.7181015822617, -2.26377179780978, 48.1990295720174, 
57.4736669182075, 8.41689226435695, -15.8983115124042, 30.6261564806236, 
79.5018869249509, 87.2542807992621, -15.3228747516659, 13.5915020818539, 
48.2301858238767), Sector = c("AG", "AG", "AG", "AG", "AG", "AG", 
"AG", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "FIN", "SERV", 
"SERV", "SERV", "SERV", "SERV", "SERV", "SERV", "OTHER", "OTHER", 
 "OTHER", "OTHER", "OTHER", "OTHER")), .Names = c("principle", 
 "pctdiff", "Sector"), row.names = c(NA, -27L), class = "data.frame")

library(ggplot2)
library(grid)
p <- ggplot(df, aes(principle, pctdiff)) +xlab("Principle")+ylab("% Difference")+
    geom_bar(aes(fill = Sector),position = "dodge", stat="identity",col="black")+
    ggtitle("How Differing Sectors Talk about Different Co-operative Principles")+theme(plot.title=element_text(hjust=0.5),panel.border = element_rect(colour = "black", fill=NA, size=1),legend.background = element_rect(color = "black"),legend.position =c(1.10,0.7),plot.margin=unit(c(0.5,3,0.5,0.5),"cm"))+
    geom_hline(yintercept = 0) 

# Add text in the bottom right corner outside the plotting area
p <- p + annotation_custom(
  grob = grid::textGrob(label = "Text", hjust=0, gp=gpar(col="blue", cex=1.7)),
  xmin = 8, xmax = 8, ymin =-90, ymax = -90
) 
# Add an arrow in the bottom right corner outside the plotting area
p <- p + annotation_custom(
  grob = linesGrob(arrow=arrow(type="open", ends="first", length=unit(3,"mm")), gp=gpar(col="red", lwd=3)), 
  xmin = 8.25, xmax = 8.5, ymin = -85, ymax = -60
) 

# Turn off panel clipping
gt <- ggplot_gtable(ggplot_build(p))
gt$layout$clip[gt$layout$name == "panel"] <- "off"
grid.draw(gt)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ggplot2 的图中添加一个指向 x 轴的箭头 的相关文章

随机推荐

  • Selenium + Java 的 elementToBeClickable 问题

    所以 我有一个隐藏在警报下的元素 警报持续 10 秒 之后用户可以单击该元素 这是我处理这种情况的代码 WebElement create driver findElement By cssSelector div action menu
  • C# 根据 XSD 验证 XML [重复]

    这个问题在这里已经有答案了 可能的重复 使用 XSD 架构进行 Xml 验证 https stackoverflow com questions 572853 xml validation using xsd schema 我使用一些 C
  • 组合 ggplot2 对象时设置拼凑中的轴限制

    组合时ggplot2对象使用拼凑而成 https patchwork data imaginist com index html我希望能够有一个选项 可以轻松地为所有图设置一个选项 使其具有相同的 x 轴和 或 y 轴范围 reprex l
  • Busboy 文件上传中出现“Unexpected end of multipart form”错误

    我正在使用 Busboy 在 Node Express 应用程序中上传文件 我收到错误Unexpected end of multipart form和应用程序崩溃 每当我尝试治疗失眠的方法时 都没有效果 在显示 Busboy 不是构造函数
  • 创建 Uri uri 时应用程序崩溃

    package com example renu customlead import android content Context import android content ContextWrapper import android
  • 如何将参数发送到流中的引用方法(java 8)?

    我有一个活动列表 Activity 我想确定表单的数据结构Map String DateTime 不是持续时间或期间 DateTime这是必须的 映射 对于每项活动 在监控期间计算的总持续时间 班级活动有 activityLabel Str
  • 启用 viewBinding 功能失败(Android Studio 3.6)

    我已经安装了 Android Studio 3 6 Canary 12 并且我想使用viewBinding feature 根据文档 我将此代码放入我的 build gradle 应用程序模块 中 android viewBinding e
  • R 闪亮应用程序的 twitter bootstrap 弹出窗口 - html 被解释为文本内容 - 为什么?

    我想将 Twitter 引导框架中的弹出窗口添加到闪亮的应用程序中 一切正常 除了 认为html true标签没有效果 shinyUI pageWithSidebar headerPanel Header sidebarPanel acti
  • 如何跟踪服务 firebird

    如何使用delphi xe10跟踪服务firebird服务器的所有事件 这是我的代码 my TIBControlService Create Self my ServerName 127 0 0 1 3050 my Protocol TPr
  • Subversion 快速解决所有冲突

    当我遇到多个冲突时 有没有办法通过告诉 SVN 保留存储库中的版本来解决所有冲突 不幸的是 我们仍在使用 1 4 我相信如果你运行命令svn revert R 您基本上撤消了对工作副本的所有更改 如果存在冲突的文件 SVN 会放弃您的更改并
  • 使用时初始化缓存

    假设我有以下事件 做一点事 取东西 获取成功的东西 DoSomething做一些需要一些缓存数据的事情 当我触发事件时 我想查看缓存并对其执行某些操作 如果存在 如果没有 那么我想获取它 等待它进入缓存 然后重试 我想出了以下解决方案 但感
  • 在 C 中以均匀概率有效地从文本文件中选择随机行?

    这本质上是一个更受限制的版本这个问题 https stackoverflow com questions 232237 whats the best way to return a random line in a text file us
  • 3d -> 1D 数组索引

    在 C 中 W H D 大小的 3D 数组的索引值是多少 对于特定的 i j k 这是正确的索引 i 宽 高 j 宽 k 您所编写的内容相当于执行以下操作的指针算术 T x D H W x i j k Pointer arithmetic
  • 将数据发送到后台运行的活动

    在活动之间传递数据时遇到问题 ListActivity 正在收集数据 当按下后退按钮时返回到 MainActivity 然后想要通过 onResume 方法获取该数据 但我什么也没得到 如何解决这个问题呢 列表活动 java Overrid
  • Git 在结帐时更改我的文件权限

    我们的工作流程是在本地计算机上开发 将更改提交到中央存储库 然后检查我们需要的该存储库的分支 问题是 Git 会根据签出的用户更改其签出的文件的所有权甚至文件权限 这样做的直接结果是 我们的 CSS 文件在签出后变得不可读 因为 Git 将
  • 使用 C# 命令行 GPG 解密 - 密码?

    我正在使用命令行来加密我发送的文件 但我正在尝试找出如何使用相同的方法来解密它们 如果我运行该命令 系统会提示输入密码 但我看不到使用命令行传递密码的方法 这是我加密文件的方法 var proc new Process proc Enabl
  • 如何从计算引擎访问谷歌驱动器

    我以前没有使用过 GCE 但计划将其用于一些 CPU 绑定的 R 脚本 我看到定价的网络部分说谷歌驱动器有免费的出口和入口 我没有看到任何有关如何从 GCE 中访问我的 google 驱动器的文档 有人可以向我指出这方面的文档吗 我建议使用
  • 两个相同的unordered_map的顺序是否相同?

    换句话说 如果我填两个unordered map or unordered set 具有完全相同内容和相同哈希函数的对象 迭代它们会给出相同的键 值对序列吗 如果是这样 那么它成立的条件是什么 例如相同的散列函数 相同的键 不一定是相同的值
  • 检查两个 DecimalUpDown 控件之间的有效值 - MVVM

    我的窗口中有两个 DecimalUpDown 控件 一个应显示文本框的最大值 另一个应显示最小值 最小控制值不能大于最大控制值 反之亦然 请注意 红色值是错误的 我怎样才能实现这个 我正在使用 MVVM 模式 谢谢 史蒂夫 您应该在视图模型
  • 在 ggplot2 的图中添加一个指向 x 轴的箭头

    我的目标是获得一个带有指向 x 轴的文本的箭头来标记平均词频 我一生都无法弄清楚如何在 ggplot2 中的绘图区域之外获取箭头或文本 这是我的代码 ggplot SUMMARY PCTDIFF aes principle pctdiff