如果输入较大的数字,R 金字塔图会非常慢

2023-12-05

我正在尝试用 R 制作金字塔图。我在互联网上找到了一个示例代码,可以实现我想要的功能。问题是我没有像示例中那样处理小数字。我的图的值为 3,000,000 到 12,000,000,但每边只有 10 个条形。尽管如此,创建具有较大数字的绘图所需的时间却更少,并且输出的 pdf 文件大小约为 800mb。

pyramid.plot(x,y,labels=groups,main="Performance",lxcol=mcol,rxcol=fcol,gap=0.5,show.values=TRUE)

为什么表现这么差?不应该自动缩放吗?

Update:

pdf(file='figure1.pdf')
library(plotrix)

x <-c(3105000,3400001,4168780,2842764,3543116,4224601,4222222,6432105,9222222,12345596)
y <-c(3105000,3400001,4168780,2842764,3543116,4224601,4222222,6432105,9222222,12345596)
groups <-c("g1","g2","g3","g4","g5","g6","g7","g8","g9","g11") 
pyramid.plot(x,y,labels=groups,main="Performance",gap=0.5,show.values=TRUE)
dev.off()

导出为 pdf 以及绘图屏幕都需要几分钟的时间。


在内部,pyramid.plot正在尝试做一些事情来欺骗轴来解决中间的间隙:如果你这样做debug(pyramid.plot)然后逐行查看,你会发现问题出在哪里:

if (is.null(laxlab)) {
            laxlab <- seq(xlim[1] - gap, 0, by = -1)
            axis(1, at = -xlim[1]:-gap, labels = laxlab)
        }

换句话说,pyramid.plot正在尝试创建一个每 1 (!) 单位有刻度的轴。 像这样的东西工作正常:

pyramid.plot(x,y,labels=groups,
             main="Performance",gap=5e5,show.values=TRUE,
             laxlab=seq(0,1e7,by=1e6),raxlab=seq(0,1e7,by=1e6))

还有一些其他事实的痕迹pyramid.plot是为人口统计图而设计的...您可以写信给包维护者并要求他考虑稍微概括一下轴的设计...

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

如果输入较大的数字,R 金字塔图会非常慢 的相关文章

随机推荐

  • C++ 有没有关闭计算机的函数?

    C 有没有关闭计算机的函数 因为我怀疑是否有一个 至少在标准库中 所以我可以从 C 调用的 Windows 函数是什么 基本上 用 C 关闭 Windows XP 计算机的代码是什么 在 Windows 上 您可以使用此处描述的 ExitW
  • 如何设置 dr7 寄存器的值以便在 x86-64 上创建硬件断点?

    我正在开发一个允许使用的 绑定 库ptrace 在 OCaml 语言中 但我的问题仅涉及ptrace 所以 现在 我正在尝试编写一小段代码 以便使用以下命令在 Linux x86 64 上创建一个简单的硬件断点ptrace define D
  • 将字符串转换为日期,格式:“dd.mm.yyyy”

    D lt 06 12 1948 which is dd mm yyyy as Date D d m y convert to date 1 2019 12 06 我缺少什么 Sys getlocale 类别 LC ALL 1 LC COLL
  • 使用 php gd2 将图像从一种格式保存为另一种格式

    我有一个数据库 其中有一列填充图像二进制数据 经过一些研究后 我弄清楚了如何检测数据的图像格式 可以说我的图像列中的记录位于gif格式 现在我想用 php gd2 将其保存到jpeg格式 请问 有人可以告诉我该怎么做吗 如果您只想将图像数据
  • 如何在嘈杂的曲线中找到拐点?

    I have the the noisy curve defined by numpy 2D array 正如您所看到的 它有第一个平坦阶段 然后是上升 峰值和衰减阶段 我需要找到上升阶段的起点 此处用红点标记 我如何在 python 中做
  • 如何从 vimscript 循环内插入文本?

    看来从 help while文档说明 NOTE The append and insert commands don t work properly inside a while and for loop 我可以确认他们没有 但是我应该使用
  • LINQ to Sql 左外连接与 Group By 和having 子句

    我花了一天时间尝试将 sql 查询转换为 LINQ lambda 表达式 但没有成功 Mysql查询 SELECT a ID Sum b Value AS Value c ContractValue FROM Contracts a LEF
  • 将 UIImage 转换为 NSData 但保留为 GIF 文件

    我有一个 UIImage 它是一个 GIF 文件 我需要将其变成 NSData 对象 但它需要保留 GIF 所以我不能使用 UIImageJPEGRepresentation 有任何想法吗 一旦它成为 UIImage 它就不再是 gif 了
  • 使用 PHPMailer 发送电子邮件 - 在正文中嵌入图像

    我正在尝试使用 PHPMailer 发送带有图像的 HTML 邮件 正文是从包含所有信息的 html 文件加载的 发送邮件时 图像不会出现在正文中 尽管我什至也将图像作为附件发送 HTML img 标签指向与该地点相同的地点 PHP mai
  • 将 MVP 模式应用于 JDialogs

    我正在编写一个 Swing 应用程序 并进一步我之前的问题 已决定使用模型 视图 呈现器模式将用户界面与业务逻辑分开 当我的应用程序启动时 它会执行以下代码 Model model new BasicModel Presenter pres
  • 最大化浮动div?

    假设我有 2 个并排的 div 1 个向左浮动 另一个向右浮动 现在假设我将左侧浮动 div 的大小固定为 200px 如何强制右侧浮动 div 最大化 自身或占据其余的水平屏幕空间 无论浏览器窗口的大小如何 这是一个使用position
  • 如何获取 Windows 10 的内容?UWP/C# 中的通知?

    我正在尝试获取用户通知中的文本 以及单击通知时发生的操作 我获得用户的阅读权限 使用UserNotificationListener RequestAccessAsync 然后迭代它们 并将它们添加到 ListView 中 private
  • JIT 拒绝内联微小方法

    我错过了严重的优化 因为 JIT 不会内联我的很多方法 例如 让我们有以下代码 static void Main string args IsControl 0 public static bool IsControl char c ret
  • 如何在php中调用bootstrap模态

    我正在尝试调用 html 文件中的模式 该模式隐藏在另一个模式旁边 其中一个在单击按钮时出现 但另一个将由 php 作为验证过程的一部分调用 这是我的 php 代码 File include index2 html Msg Welcome
  • Gmail API 是否支持使用 OAuth 服务帐户?

    我正在尝试将 Gmail API 与 Python Google 客户端库一起使用 我已经通过 Google 开发者控制台创建了一个服务帐户凭据 然后我尝试使用这些凭据 例如 from oauth2client client import
  • 使用新的 GPG 密钥放弃之前的 Git 提交

    我正在尝试转换到新的 GPG 密钥 我想在 Git 存储库中重新签署我之前的所有提交 具有使用我以前使用过的密钥进行有效签名 使用新的 GPG 密钥 换句话说 我如何自动退出 使用我的新密钥 我使用以前的密钥签名的所有提交 如果您需要在示例
  • Ruby 中未提取返回值

    def get dept class type departments classifications types select one 3 Department all each do d departments lt lt d name
  • Java 中的用户输入超时

    我正在尝试构建具有此功能的命令行界面 如果用户花费超过 15 秒的时间来插入输入 在本例中为整数 则该函数将做出默认选择 0 下面的代码是我到目前为止编写的并且可以正常工作 问题是我想添加一个新功能 如果用户写了错误的数字 范围 控制台应该
  • NASM 我应该在调用函数后弹出函数参数吗?

    假设我有一个像这样的 nasm 函数 inc mov rax rsp 8 add rax BYTE 1 ret 我这样调用这个函数 push some var call inc 我想通过堆栈将参数传递给函数 所以我推送some var然后调
  • 如果输入较大的数字,R 金字塔图会非常慢

    我正在尝试用 R 制作金字塔图 我在互联网上找到了一个示例代码 可以实现我想要的功能 问题是我没有像示例中那样处理小数字 我的图的值为 3 000 000 到 12 000 000 但每边只有 10 个条形 尽管如此 创建具有较大数字的绘图