ggplot 中的躲避/替换/排斥轴刻度标签?

2024-04-23

如果没有大量工作,我想要的可能是不可能的,但也许有人有解决方案。我有一个如下图(当然这是一个过于简单的示例),其中我的刻度标签彼此非常接近:

dd <- data.frame(x=1:4, y=c(-10,10.5,10.6,10.7),
                 z = LETTERS[1:4])
library(ggplot2)
gg1 <- ggplot(dd, aes(x,y)) +
  geom_point() +
  geom_segment(x=0, aes(xend=x, y=y, yend=y)) +
  scale_y_continuous(breaks=dd$y, labels=dd$z)

如果我真的想要,我可以导出为 SVG,将其转储到 Inkscape 中,然后手动将标签分开(甚至添加连接标签与精确 y 轴位置的小指示线):

如果能够以编程方式/自动执行类似的操作,那就太好了。我想:

  • ggrepel包(仅适用于标签/文本within情节据我所知)
  • directlabels包(它有一些放置选项,例如“first.bumpup”might对于这种情况具有适应性/可修改性)
  • the n.dodge and check.overlap论点guide_axis如图所示here https://datavizpyr.com/how-to-dodge-overlapping-text-on-x-axis-labels-in-ggplot2/看起来有用又有趣,而且它们almost处理这个案子,但是n.dodge水平躲避标签,如果标签长于几个字符,就会变得难看......

我会很高兴有一个label.pos.nudge可以手动指定参数,以将标签沿轴的位置从相应的位置移开


感谢建议查看这个问题 https://stackoverflow.com/questions/56025382/ggrepel-labels-outside-to-the-right-of-ggplot-area/56027661#56027661 (and 这个问题 https://stackoverflow.com/questions/12409960/ggplot2-annotate-outside-of-plot让我知道coord_cartesian(clip = "off"),我做了以下工作(note我必须改变geom_segment(x=0, ...) to geom_segment(x=-Inf, ...)在上面的基本示例中,这样关闭剪辑就不会弄乱事情)。

gg1 + coord_cartesian(clip = "off") +
  theme(axis.text.y = element_blank(),
        plot.margin = margin(t=5.5, r=5.5, b=5.5, l=30, unit="pt")) +
  geom_text_repel(x = 0.85, aes(label = z, y = y),
                  direction = "y",
                  force_pull = 100,
                  hjust = -7,
                  xlim = c(0.8,1))

请注意,这可能需要对情节边缘和参数进行大量的处理geom_text_repel (force, force_pull, hjust, xlim等)让它看起来正确......我仍然没有按照我想要的方式得到我的真实情节,但它已经接近了。 (有可能是x and hjust值在这里是多余的......)

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

ggplot 中的躲避/替换/排斥轴刻度标签? 的相关文章

  • 将 JSON URL 转换为 R 数据帧

    我在将 JSON 文件 从 API 转换为 R 中的数据帧时遇到问题 例如 URL 我尝试了 S O 的一些不同建议 包括将json数据转换为R中的数据框 https stackoverflow com questions 28683769
  • 将值替换为其各自列的名称

    我有一个数据框 Code 401k CVS 101A true 231N true FD54 true 99JB 85F4 true 我试图用相应的列名称 例如 401k 替换 true 字符值 这是我想要的输出 Code 401k CVS
  • 如何使用 R 中带引号的字符值内的序列读取 CSV?

    这是一个包含两个字符列的 CSV 文件 key value a 所有字符值都用双引号引起来 并且有一个顺序 在值之一内 转义引号加分隔符 我无法通过 read csv readr 中的 read csv 或 data table 中的 fr
  • 如何更新条件公式?

    让我直接进入示例 考虑以下等式 frml lt formula y a b x z 使用这样的公式规范 例如和AER ivreg 我想更新这个公式 使其显示为 frml2 lt y a b c x z w 但是 我不确定如何更新条件标志之前
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 查找数据帧列表中同一列中的所有重复值并将其转换为 NULL

    我有一个清单BELGIAN COAST list包含数百个数据帧 df1 df2 15 列 X 1000 行 每个数据帧的最后一列称为Chemicals并包含一些字符 例如Sulfate or Ammonia 但是这一列有很多行Chemic
  • 从 R 环境中删除对象

    我正在阅读 Hadley 的 Advanced R 在第 8 章中 他说我们可以使用以下方法从环境中删除对象 rm 但是 移除该物体后我仍然可以看到该物体 这是我的代码 e lt new env e a lt 1 e b lt 2 e a
  • R 编程:如何计算数据框中两个单元格之间的差异并将它们保存在新列中

    尝试学习 R 并陷入自相关示例中 我想将 x 的差异与 y 的差异进行回归 我在数据框中有 x 和 y 并且希望将 x2 x1 的差值保存在新列 例如 dx 中 我不知道该怎么做 我拥有的 data1 x y 5 3 8 9 3 1 1 5
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • 根据另一列中的键累积一列中的值时出现问题

    我有一个看起来像这样的数据框 我需要使用 PROJ ID 列中的字符串创建一个新的值列 并形成 PROJ NAME 列中的值字符串 这里提供的解决方案 根据 r 中另一列的键累积一列中的值 https stackoverflow com q
  • 将函数应用于 3d 数组的每一层,返回一个数组

    假设您有一个包含行 列和层的 3 维数组 A lt array 1 27 c 3 3 3 想象你有一个函数 它接受一个矩阵作为输入并返回一个矩阵作为输出 就像t 如何将该函数应用于数组的每一层 返回与第一层大小相同的另一个数组 我觉得我应该
  • 将数据从 R 导出到 Excel

    我试图将从 R 获得的一些结果导出到 Excel 中 但未成功 我尝试过以下代码 write table ALBERTA1 D ALBERTA1 txt sep t write csv ALBERTA1 ALBERTA1 csv your
  • 解析,用三点参数替换

    让我们考虑一个典型的deparse substitute R call f1 lt function u x y print deparse substitute x varU vu varX vx varY vy f1 u varU x
  • 如何按 data.table 中的十分位数组计算统计数据

    我有一个 data table 想按组计算统计数据 R set seed 1 R DT data table a rnorm 100 b rnorm 100 这些组应该定义为 R quantile DT a probs seq 1 9 1
  • r 中的 5 维图

    我正在尝试在 R 中绘制 5 维图 我目前正在使用rgl包以 4 个维度绘制数据 使用 3 个变量作为 x y z 坐标 另一个变量作为颜色 我想知道是否可以使用这个包添加第五个变量 例如空间中点的大小或形状 这是我的数据和当前代码的示例
  • 如何计算嵌套函数中的粘合表达式?

    我正在尝试嵌套一个函数 该函数将两个字符串粘合在一起 该函数使用组合字符串来命名数据帧的列 然而 问题似乎是粘合表达式没有足够早地评估为字符串 我可以 并且应该 强制在将表达式作为参数传递给另一个函数之前对其进行求值吗 library ti
  • 为什么 geom_boxplot 比基本箱线图识别更多异常值?

    这是一个可重复的示例 与基本箱线图相比 最后一个治疗组又发现了一个异常值 dta lt structure list Treatment c A A A A A A A A A A A A A A A A B B B B B B B B B
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • 使用predictNLS围绕R中的拟合值创建置信区间?

    我想使用 R 中 propogate 包中的 PredictNLS 围绕一大组拟合值构建置信区间 作为示例 我将使用它们在函数描述中引用的数据集 https rdrr io github anspiess propagate man pre
  • ggplot2、R 中的单条形条形图

    我有以下数据和代码 gt ddf var1 var2 1 aa 73 2 bb 18 3 cc 9 gt gt dput ddf structure list var1 c aa bb cc var2 c 73L 18L 9L Names

随机推荐

  • 为什么不使用强制转换语法调用“operator void”?

    玩的时候这个答案 https stackoverflow com questions 4030959 will a variablename c statement be a no op at all times 4030983 40309
  • 如何通过RAW套接字发送修改后的IPv6数据包?

    我正在尝试通过 C Linux 中的 RAW 套接字发送自定义 IPv6 标头 我已经使用 IP HDRINCL 套接字选项在 IPv4 中取得了成功 但是 IPv6 没有等效的选项 我找到了解决方法here http lists open
  • 直接性与Lambda性

    为什么 proc 和 lambda 返回不同的 arity 值 e g proc x 0 arity gt 0 lambda a 0 arity gt 1 proc x 0 y arity gt 1 lambda x 0 y arity g
  • 如何在 PyCharm IDE 中使用子进程模块调用基于 ncurses 的应用程序?

    我想使用 subprocess 模块从 python 启动一个基于 ncurses 的应用程序 基于 ncurses 的应用程序是 TABARI 一个事件提取系统 事件提取的结果保存到文件中 我想从 python 脚本启动它 等待它终止 然
  • Celery 与rabbitmq 创建结果多个队列

    我已经用 RabbitMQ 安装了 Celery 问题是 对于返回的每个结果 Celery 都会在 Rabbit 中创建队列 并在交换 celeryresults 中使用任务 ID 我仍然想得到结果 但在一个队列上 我的芹菜配置 from
  • 带有 nib 文件的视图控制器在 ios 8 beta 5 中是否损坏?

    我在 ios 8 beta 4 中创建了一个测试项目 它作为主视图控制器 并使用 xib 文件作为 UIViewController 子类创建了第二个视图控制器 我在主控制器上放置了一个按钮来显示第二个控制器 class ViewContr
  • 在 Ruby 中使用 >(大于号)比较两个字符串?

    我在我正在从事的一个项目中发现了一段看起来有点可怕的代码 它应该显示两个数字之间的 增量 但它使用的是 gt 比较数字字符串而不是数字 我假设代码目前按预期工作 所以我只是想了解 Ruby 在这种情况下如何比较这些字符串 这是替换变量的示例
  • electronics-react-boilerplate:单击按钮时的子窗口

    我怀疑如何将reactjs文件加载到新窗口中 单击电子反应样板中的按钮 const handleVideoCall gt const remote require electron remote const BrowserWindow re
  • 在单独的项目中创建单元测试是 Android 的正确方法吗?

    关于如何开始在 Android 中进行测试的描述似乎不一致 http developer android com guide topics testing testing android html http developer androi
  • 使用IdentityServer3调用Web API时出现401未经授权

    我正在尝试使用 IdentityServer3 和客户端凭据流程来设置一个简单的示例 该示例包含一个控制台客户端 使用从 IdentityServer 接收的令牌调用 Web API 资源 Web API 和 IdentityServer
  • 如何让ChildWindow阻塞

    ChildWindow是一个模态窗口 但它不会阻塞 有什么办法让它阻塞吗 我基本上想要一个 ShowDialog 方法 该方法将调用 ChildWindow Show 但直到用户关闭 ChildWindow 后才会返回 我尝试使用 Moni
  • 在c# Visual Studio中编译协议缓冲区3时间戳类型?

    Visual Studio 2015 C NuGet Packages Google Protobuf v3 0 0 Google Protobuf Tools v3 0 0 消息类型Quake syntax proto3 import g
  • 休眠批量插入-刷新如何工作?

    我需要使用 hibernate 在数据库中插入大量数据 我正在查看 hibernate 的批量插入 我使用的类似于手册上的示例 Session session sessionFactory openSession Transaction t
  • Kivy 弹出窗口在单独的线程中运行

    我正在 Kivy 中填充一个树视图 这需要一些时间 具体取决于它的大小 在树很大并且需要一段时间的情况下 我想在填充时显示一个弹出窗口 以便用户知道程序尚未冻结 并在填充树的逻辑完成时关闭此弹出窗口 这是我通过对该主题的一些研究得出的结论
  • 将坐标列表转换为元组列表

    我正在尝试将坐标列表转换为元组列表 from a list 56 78 72 67 55 66 to list of tuples 56 78 72 67 55 66 我尝试执行 for in 循环将 a list 中的每个元素转换为元组
  • 与枚举和可选元组关联值进行 Swift 模式匹配

    我目前正在使用 Alamofire 并使用枚举来描述我按照自述文件中的建议使用的 API 端点表示如下 public enum API case GetStops stopCode String case GetPhysicalStops
  • 2个JS函数同名冲突

    Short 在同一页面使用 2 个库 jQuery UI 和 Twitter Bootstrap jQuery UI 对我来说非常重要 因为几乎所有的 UI 东西都是基于它构建的 Twitter Bootstrap 仅适用于带下拉菜单的拆分
  • 如何通过拖动扩展窗口框架来使 WPF 窗口可移动?

    在 Windows 资源管理器和 Internet Explorer 等应用程序中 人们可以抓住标题栏下方的扩展框架区域并拖动窗口 对于 WinForms 应用程序 窗体和控件尽可能接近本机 Win32 API 一个人会简单地覆盖WndPr
  • 总和投影和结果约束

    我在数据库中有 100 个实体 我想获取前 20 个实体的某些属性的总和 Criteria cr getSession createCriteria Entity class cr setFirstResult 0 cr setMaxRes
  • ggplot 中的躲避/替换/排斥轴刻度标签?

    如果没有大量工作 我想要的可能是不可能的 但也许有人有解决方案 我有一个如下图 当然这是一个过于简单的示例 其中我的刻度标签彼此非常接近 dd lt data frame x 1 4 y c 10 10 5 10 6 10 7 z LETT