自动调整 ggplot 中条形的大小以实现多个图形 R 的均匀性

2024-04-26

我在循环中生成几个条形图,它们都根据输出大小(从绘图/设备大小假设?)而不是根据条形大小调整大小。这意味着具有两个条形图的图具有粗条形图,而具有 6 个条形图的图具有细条形图;但两个输出的大小相同。下面的代码代表了我的带有可重现数据的脚本(我对我的进行了许多其他 aes/主题更改)。

我希望调整输出图的大小(以条形宽度的尺寸),以便不同图形中的条形始终具有相同的宽度,但输出图像根据(相同宽度)条形的数量更改大小。

my_factors = c("vs","cyl","carb")

for (current_factor in my_factors) {
    c <- ggplot(mtcars, aes(factor(current_factor)))
    c + geom_bar() + coord_flip()

    ggsave(paste0(my_factors(current_factor),".png")
}

抱歉,如果我错过了一些明显的东西,我是 ggplot 和 R 的新手。我来自 MATLAB,所以整个“设备”的事情仍然让我感到困惑!在 MATLAB 中,我会明确指定条形大小(即不是相对的),并且输出会相应地调整大小。


你可以用这个foo功能

library(lazyeval)
library(ggplot2)
foo <- function(data,i, height_rate = 0.1){
  height <- eval(substitute(length(unique(data$i))))
  ld <- as.lazy_dots(list(lazy(i))) 
  ld <- as.lazy_dots(lapply(ld, function(x){ 
    try(x$expr <- as.name(x$expr), silent=TRUE)
    x
  }))
  x <- make_call(quote(aes),make_call(quote(factor),ld))
  ggplot(data, eval(x$expr))+
    geom_bar(width = height_rate*height)+
    coord_flip()
}

foo(mtcars,"cyl")

因为lazyeval package

foo(mtcars,cyl)

也有效。此代码的一个缺点是仅使用列的确切名称。所以为了使用for循环代码必须稍微开发一下。希望能帮助到你。

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

自动调整 ggplot 中条形的大小以实现多个图形 R 的均匀性 的相关文章

  • stat_function 从函数生成平线

    我有以下代码 library ggplot2 f lt function x if x gt 2 1 x 0 3 else 0 graph lt ggplot data frame x c 0 10 aes x graph lt graph
  • ggplot 图例标签内的希腊字母、符号和换行符

    我在尝试着 有换行符 自动或强制 对齐文本 左对齐或左右对齐 有希腊字母和百分号 在 gglot 图例标签内 我尝试了几种方法 但我似乎无法将我读到的所有技巧结合起来 我可以通过插入来换行 n进入标签 但这似乎不适用于希腊字母 不适用于图例
  • 在函数中使用 quit/q 会导致 RStudio 出现致命错误

    更多的是好奇 但当你使用时q or quit在 R studio 内的函数内部 它会导致致命错误 如下所示 但 rgui 中的相同函数会导致 R 像往常一样停止 并且仅使用q 在 RStudio 中按预期关闭 R 为什么q在函数中导致 RS
  • 如何使用 R 中的函数 sqlSave() 将数据附加到具有 IDENTITY 主键的 SQL Server 表?

    我在SQL Server中创建了一个表 如下所示 CREATE TABLE testPK ID INT NOT NULL IDENTITY 1 1 PRIMARY KEY NumVal NUMERIC 18 4 现在我想使用 RODBC 函
  • 美人鱼图:调整图表周围的空白

    我在用 Rstudio 编译的 Rmd 报告中使用了美人鱼图 在 HTML PDF 输出中 图表上方和下方有大量空白 请参见下面的示例 Header Text r library DiagrammeR mermaid graph TD cl
  • 将所有分号替换为空格 pt2

    我尝试对 2000 多行关键字的列表运行文本分析 但它们的列出方式如下 战略 管理风格 组织 所以当我使用 tm 删除标点符号时 它就变成了 组织的战略管理风格 我认为这在某种程度上破坏了我常用术语的分析 我尝试过使用 vector lt
  • 在 R 中导入 csv 文件时如何保留前导零?

    当我写一个 csv来自 R 的文件 其中我的组名称以前导零值开头 前导零被保留 但是当我导入 csv前导零被删除 组名称被转换为整数 当我导入一个组时 如何保留组名称中的前导零 csvR 中的文件 Example df lt data fr
  • R data.table 多个条件连接

    我设计了一种解决方案 用于从两个单独数据表的多个列中查找值 并添加基于新列的值计算 多个条件比较 代码如下 它涉及在计算两个表中的值时使用 data table 和联接 但是 这些表没有联接在我正在比较的列上 因此我怀疑我可能无法获得 da
  • 根据 R 数据框中的名称对列进行平均

    我想知道是否有一种有效的方法来获取每组的平均值类似命名的列谁的名字结尾为 1S and 2S ex ex1S ex2S at time 1并取每组的平均值类似命名的列谁的名字结尾为 1C or 2C ex ex1C ex2C at time
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • 空间数据xyz到矩阵

    我有一个大数据框 100 000 行 其中包含 LON LAT VALUE 我想将其转换为矩阵 EPSG 中的坐标 3035 我使用以下命令尝试了 reshape2 包 acast df lon lat value var value 效果
  • 如果条目出现次数少于 x 则删除数据框中的行

    我有以下数据框 称之为 df 它是由三个向量组成的数据框 姓名 年龄 和 邮政编码 df Name Age ZipCode 1 Joe 16 60559 2 Jim 20 60637 3 Bob 64 94127 4 Joe 23 9412
  • 通过 R 中的数据子集执行计算

    我想对数据框的 PERMNO 列中的每个公司编号进行计算 其摘要可以在此处查看 gt summary companydataRETS PERMNO RET Min 10000 Min 0 971698 1st Qu 32716 1st Qu
  • R data.table 1.9.2 关于 setkey 的问题

    这似乎是 1 8 10 后引入的一个错误 与包含列表的 DT 的 setkey 相关 运行下面两个代码来查看问题 library data table dtl lt list dtl 1 lt data table scenario 1 p
  • 使用 ggplot 构面时增加闪亮的绘图大小

    有没有办法增加绘图窗口的大小shiny取决于在一个中使用的面的数量ggplot图 也许使用垂直滚动 例如 使用下面的示例 当输入为 A 有三个方面 情节看起来不错 当选项 B 选择绘图数量会增加 但绘图窗口保持相同大小 导致绘图太小 是否有
  • 如何绘制每条线之间具有特定距离的图形

    实际上 我尝试绘制一个图形 但它将所有列 线 放在一起并显示 因此它不具有代表性 我尝试制作模拟数据并向您展示我如何绘制它 并向您展示我想要的内容 我不知道如何制作像下面所示的示例的数据 但我在这里做了什么 set seed 1 M lt
  • 使用 pkg:sjPlot 函数创建一个生成部分斜体单元格的数据框

    我正在尝试创建一个简单的数据表 其中 Coral taxon 列中的属名称为斜体 而 spp 列中的属名称为斜体 属名后面的部分不大写 我尝试使用 expression 函数对 Coral taxon 的每一行进行编码 但没有成功 sum
  • 在 igraph 中为社区分配颜色

    我在 igraph 中使用 fastgreedy community 检测算法在 R 中生成社区 代码返回 12 个社区 但是在绘图时很难识别它们 因为它返回的图的颜色数量有限 我怎样才能用十二种不同的颜色绘制这个图表 l2 lt layo
  • 更快的 %in% 运算符

    The 快速匹配 https cran r project org web packages fastmatch index html包实现了更快的版本match对于重复匹配 例如在循环中 set seed 1 library fastma
  • 如何绘制大时间序列(数千次给药次数/药物剂量)?

    我正在尝试绘制医院中如何开出单一药物的图解 在这个虚拟数据库中 我在 2017 年 1 月 1 日之后遇到了 1000 名患者 绘图的目的是了解该药物的给药模式 在接近入院 出院或患者住院期间是否更频繁 高剂量给药 Get random d

随机推荐

  • 如何返回 MongoDB 中最新日期的元素

    在 MongoDB 上 如何从此列表中选择具有最新日期的元素 id ObjectId 5c5064f39d0c4b52cf6d1d55 Date 12 09 2018 Type A Value 73650 14 id ObjectId 5c
  • 当 dec 不为 0 时,为什么 0xF00 被解释为 NO

    我发现 BOOL x BOOL 0xF00 is NO 价值0xF00非零 但结果仍然是NO 但这打破了我的范式 BOOL 应该作为 NO 0 YES any other value 为什么会这样呢 这是否意味着检查 if object 不
  • Android volley图片缓存问题

    在google自己的volley图像缓存教程中 Returns a cache size equal to approximately three screens worth of images public static int getC
  • 为什么没有定义 PCTSTR 而定义了 LPCTSTR?

    我被指派更新用 MSVC 6 编写的旧代码 我得到了 PCTSTR 的未知定义 但即使我包含了 tchar h 它也没有定义 根据我以前的经验 我知道有 LPTSTR 但没有 PCTSTR 我 grep C Program Files Mi
  • exec 语句将 LOAD_GLOBAL 更改为 LOAD_NAME?

    学习中这个答案 https stackoverflow com a 18647337 65696 令我惊讶的是 我发现exec有奇怪的行为 gt gt gt def f1 return x gt gt gt def f2 exec retu
  • 使用 CGPathContainsPoint SWIFT 时遇到的问题

    我需要检查 CGPoint 是否位于 SKSpriteNode 内 经过一番研究后 CGPathContainsPoint 似乎适合我的目的 if CGPathContainsPoint my sprite path nil my poin
  • 类型模块中的什么类型描述了一个类?什么类型描述了一个函数?

    The new typingPython 3 5 中的 module 提供了许多用于类型注释的工具 它是否提供了封装以下思想的对象或类型class 怎么样的想法function 在下面定义装饰器的代码中 应该代表什么class 应该代表什么
  • 打开与 Java Card 和 Global Platform 的安全连接

    在模拟器上成功开发 Java Card 后 现在我正在处理一个真正的 Java Card 金雅拓 IDCore 3010 http www gemalto com dwnld 6589 IDCore3010 Product Datashee
  • 找不到 Java 安全类

    启动我的程序时 会弹出下一个错误 java lang NoClassDefFoundError 无法初始化类 javax crypto SunJCE b 这意味着这个类丢失了 尽管我手动找到了这个类 可以通过 jar ide 工作 但不能通
  • 如何在 ionic 2 中使用 lokijs-cordova-fs-adapter

    我正在尝试在我的 ionic 2 应用程序中使用 lokijs 我能够使用 lokijs js 当尝试坚持使用适配器时 我无法做到 我准备好 lokijs cordova fs adapter 就可以使用了 但是当我在我的应用程序中引用它时
  • 如何抑制“common-java”规则的警告

    我需要暂时忽略规则 单元测试分支覆盖率不足 common java InsufficientBranchCoverage Reading http docs sonarqube org display SONAR Frequently As
  • 使用 SwiftMailer 批量发送电子邮件

    我目前正在使用迅捷邮递员 http swiftmailer org向多个用户 最多 50 个 发送电子邮件 我已将其设置并正常工作 但是 我不太确定如何从 MySQL 数据库中提取收件人并迭代发送它们 这是我目前拥有的
  • getopts 未提供参数

    如何检查是否没有提供必需的参数 我发现 switch case 中的 选项应该足以达到此目的 但它永远不会进入该 case 代码块 我是否将 冒号大小写 放在开头或其他位置并不重要 我的代码 while getopts a b OPTION
  • 销毁与解除分配

    在 Accelerated C 第 11 章中 作者提出了一个使用数组模拟 std vector 行为的 Vector 类 他们使用分配器类来处理内存管理 的作用uncreate函数是销毁数组的每个元素并释放为数组分配的空间 templat
  • conda创建环境没有响应

    我想安装 python 2 7 作为 conda 环境 conda create n python2 python 2 7 anaconda Collecting package metadata current repodata json
  • 拥有集合侦听器的好方法?

    有没有比将 Java 集合包装在实现观察者模式的类中更好的方法来在 Java 集合上设置侦听器 你应该检查一下釉面清单 http publicobject com glazedlists 它包含可观察的 List 类 每当添加 删除 替换元
  • @Transactional 注释的替代方案

    spring中回滚事务除了 Transactional注解还有什么替代方案 我已经使用了这个注释 但我想要在 catch 块中回滚事务的方式 有什么办法吗 提前致谢 这是一个草稿 public class SomeService imple
  • Firebase云功能不触发onCreate

    尝试使用 Cloud Functions 处理联系表单提交以发送电子邮件 Hello World 功能正常启动 所以我认为设置很好 该表单填充 消息 集合 但我没有收到以下触发器的日志条目 或错误 const functions requi
  • @types/jest index.d.ts 文件返回错误

    我刚刚将 types jest 安装到了我的 stenciljs 入门应用程序中 现在 当我开始我的项目时 新安装的节点包返回了几个错误 这是我访问时返回的错误npm start我的项目 ERROR TypeScript node modu
  • 自动调整 ggplot 中条形的大小以实现多个图形 R 的均匀性

    我在循环中生成几个条形图 它们都根据输出大小 从绘图 设备大小假设 而不是根据条形大小调整大小 这意味着具有两个条形图的图具有粗条形图 而具有 6 个条形图的图具有细条形图 但两个输出的大小相同 下面的代码代表了我的带有可重现数据的脚本 我