ggplot2,在 x 对数刻度上引入中断

2024-04-16

我有一个这样的情节:

 p<-ggplot() +
 geom_line(data= myData, aes(x = myData$x , y = myData$y)) +
 scale_x_log10()+
 scale_y_log10()

我的x值是seq(9880000, 12220000, 10000)

绘图的 x 轴上只有 1 个断点,如果要在绘图的 x 轴上至少有 3 个断点,我该怎么办?


这是原始海报问题的完全可重现的示例,其中对数标度图仅在 x 轴上显示一个中断值。我在下面演示了三种可能的解决方案。

library(ggplot2)

# Create a reproducible example data.frame using R functions.
x = seq(9880000, 12220000, 10000)

# Use set.seed() so that anyone who runs this code
# will get the same sequence of 'random' values.
set.seed(31415) 
y = cumsum(runif(n=length(x), min=-1e5, max=1e5)) + 1e6

dat = data.frame(x=x, y=y)

# Original poster's plot.
p1 = ggplot(data=dat, aes(x=x, y=y)) + 
     geom_line() +
     scale_x_log10() +
     scale_y_log10() +
     labs(title="1. Plot has only one x-axis break.")

# Add extra x-axis breaks manually.
x_breaks = c(10^7.0, 10^7.04, 10^7.08)
p2 = ggplot(data=dat, aes(x=x, y=y)) + 
     geom_line() +
     scale_x_log10(breaks=x_breaks) +
     scale_y_log10() +
     labs(title="2. Add some x-axis breaks manually.")


# Add extra x-axis breaks in semi-automated manner.
x_breaks = 10^pretty(log10(x))
x_labels = formatC(x_breaks, format = "e", digits = 2)
p3 = ggplot(data=dat, aes(x=x, y=y)) + 
     geom_line() +
     scale_x_log10(breaks=x_breaks, labels=x_labels) +
     scale_y_log10() +
     labs(title="3. Create x-axis breaks with R functions.")



# Skip the log10 scale because the x-values don't span multiple orders of magnitude.
p4 = ggplot(data=dat, aes(x=x, y=y)) + 
     geom_line() +
     scale_y_log10() +
     labs(title="4. Check appearance without log10 scale for x-axis.")


library(gridExtra)
ggsave("example.png", plot=arrangeGrob(p1, p2, p3, p4, nrow=2),
       width=10, height=5, dpi=150)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ggplot2,在 x 对数刻度上引入中断 的相关文章

  • 如何使用 sprintf 函数在字符中添加前导“0”而不是空格?

    我正在尝试使用sprintf函数为字符添加前导 0 并使所有字符长度相同 然而我得到的是领先空间 My code a lt c 12 123 1234 sprintf 04s a 1 12 123 1234 我试图得到什么 1 0012 0
  • 在 Shiny 中叠加两个 ggplot

    我有一个非常大的数据集 我正在使用 ggplot 在 Shiny 上绘制它 我有一个与 x 轴上的值相关联的滑块 我想用它对选定的数据子集重新着色 并让其余数据保持原样 最简单的选择是重新创建整个绘图 但由于它是一个大型数据集 因此这是一个
  • 使用 readHTMLTable 从 https 网页读取表格

    我安装了 R 3 3 1 并使用 RStudio 0 99 903 我正在尝试从以下 URL 将表格读入 R https www fantasypros com nfl rankings consensus cheatsheets php
  • 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进入标签 但这似乎不适用于希腊字母 不适用于图例
  • 将不同的 grViz 组合成一个图

    我想结合不同的DiagrammeR绘制成一个图形 生成的图如下例所示 library DiagrammeR pDia lt grViz digraph boxes and circles a graph statement graph ov
  • 在函数中使用 quit/q 会导致 RStudio 出现致命错误

    更多的是好奇 但当你使用时q or quit在 R studio 内的函数内部 它会导致致命错误 如下所示 但 rgui 中的相同函数会导致 R 像往常一样停止 并且仅使用q 在 RStudio 中按预期关闭 R 为什么q在函数中导致 RS
  • 使用自定义渐变填充直方图箱

    我想在 R 和 ggplot2 中创建一个直方图 其中根据连续的 x 值填充箱 大多数教程仅通过离散值或密度 计数进行着色 下列的这个例子 https stackoverflow com questions 40284227 how to
  • 为每个因素级别添加日期时间序列

    我有一个带有因子列的数据框 s lt data frame id 901 910 s id lt as factor s id 我有一个日期时间序列 library lubridate start lt now as difftime 2
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • dplyr 中的标准评估:全局环境中的函数出现“无法找到函数”错误

    我试图在 dplyr 中对全局环境中的函数使用标准评估 但出现 无法找到函数 错误 这是一些代码 create data frame df lt data frame x rnorm 10 y rnorm 10 define arbitra
  • zsh:未找到命令:使用 Big Sur Mac 的终端上的 R

    我从官方 cran 网站安装了 R 我可以从 Rstudio 运行 R 但是当我尝试从终端使用 R 时 我得到以下结果 base ege Eges MBP R zsh command not found R base ege Eges MB
  • R参考类问题

    我正在尝试在 R 中创建一个简单的参考类 这是我的代码 R 初学者 MyClass lt setRefClass MyClass fields list a numeric b numeric methods list initialize
  • 在 Lavaan 生长曲线模型中提取个体轨迹

    我已经使用 R 的 Lavaan 包中的 Growth 函数成功地对一项研究的纵向数据进行了建模 我找不到任何关于如何提取每个参与者的预测轨迹的记录 我只能找到整个组的预测轨迹 在摘要输出的 拦截 部分下给出 使用 lavPredict m
  • 通过 r markdown 中的循环创建代码片段

    如同如何使用R中的knitr创建一个包含代码块和文本的循环 https stackoverflow com questions 36373630 how to create a loop that includes both a code
  • 通过 R 中的数据子集执行计算

    我想对数据框的 PERMNO 列中的每个公司编号进行计算 其摘要可以在此处查看 gt summary companydataRETS PERMNO RET Min 10000 Min 0 971698 1st Qu 32716 1st Qu
  • rvest 和 NHL 统计数据的 CSS 选择器问题

    我想从 hockey reference com 中抓取数据 特别是从以下链接中抓取数据 https www hockey reference com leagues NHL 1991 html https www hockey refer
  • 使用 RDCOMClient 搜索 Outlook 收件箱

    我尝试使用 RDCOMClient 在 Outlook 收件箱中搜索电子邮件中的特定主题 然后获取附件 我在一封电子邮件上进行了这项工作 但由于主题包含日期元素 我需要搜索成为一个类似的子句 但不太清楚这适合我的下面的查询 outlook
  • 如何绘制每条线之间具有特定距离的图形

    实际上 我尝试绘制一个图形 但它将所有列 线 放在一起并显示 因此它不具有代表性 我尝试制作模拟数据并向您展示我如何绘制它 并向您展示我想要的内容 我不知道如何制作像下面所示的示例的数据 但我在这里做了什么 set seed 1 M lt
  • R - 与 SpatialPolygonsDataFrame 对象相交的 SpatialLinesDataFrame 列表的嵌套循环

    我有一系列需要完成的步骤SpatialLinesDataFrame 此处的 线 基于对象与多特征中各个特征的关系SpatialPolygonsDataFrame 多边形 对象 简而言之 每个线列表元素源自单个面要素内部 并且可能会也可能不会

随机推荐

  • 优化 MySQL 插入以处理数据流

    我正在使用高速数据流并执行以下步骤将数据存储在 MySQL 数据库中 对于每件新到货的商品 1 解析传入项 2 执行几次 INSERT ON DUPLICATE KEY UPDATE 我用过插入 重复密钥更新 http dev mysql
  • 查找给定范围内给定数字的整数个数的算法

    如果我以列表的形式得到完整的数字集list我想知道它们在给定范围内可以形成多少个 有效 整数 A B 我可以使用什么算法来有效地完成它 例如 给定一个数字列表 包含重复项和零 list 5 3 3 2 0 0 我想知道这个范围内可以组成多少
  • 为什么字体名称需要引号?

    据我所知 如果字体包含空格 则需要使用双引号或单引号 例如 font family Times New Roman Times font family Times New Roman Times 但在谷歌字体上 http www googl
  • Git:区分本地和远程标签

    如果远程存储库中有标签 我通常会在拉取时自动获取它们 当我删除创建的本地标签时 git tag d
  • Hudson 基于 URL 令牌构建

    我配置了一个 hudson 实例并创建了作业 创建构建时 我能够看到此选项 通过访问此 URL SecretTOKEN 触发构建 选项 现在 我无法在我创造的任何新工作中看到这一点 我是否缺少某些设置或配置 我所做的唯一更改是将 servl
  • C# 中的委托数组

    我正在尝试从委托数组调用委托函数 我已经能够创建委托数组 但是如何调用委托呢 public delegate void pd public static class MyClass static void p1 static void p2
  • Spring 提供静态内容,同时具有通配符控制器路由

    我的应用程序是在前端使用骨干和后端使用 spring 框架构建的 这是一个单一的 html 应用程序 路由由骨干网处理 因此我有一个具有以下结构的后端路由 RequestMapping value method RequestMethod
  • 如何调用maven默认生命周期

    如果我打电话 mvn clean install maven知道clean是一个生命周期 install是默认生命周期的一个阶段 如果我打电话 mvn deploy maven 将按顺序执行默认生命周期的所有阶段 有没有办法通过给出生命周期
  • Mac OS X:尝试链接(ld)到框架

    我正在阅读 Mark 和 Aaron 所著的 高级 Mac OS X 编程 我无法让一个终端语句正常工作 cc g o useadd F Adder build framework 加法器 useadd m 它位于第 45 页 第 3 章
  • Angular2 - 多个依赖的顺序 http api 调用

    我正在构建一个 Angular2 应用程序 其中一个组件需要进行多个 API 调用 这些调用依赖于之前的调用 我目前有一项服务可以调用 API 来获取电视节目列表 对于每个节目 我需要多次调用不同的 API 来逐步检查该结构 以确定该节目是
  • 在rocker/shiny docker中部署shiny应用程序

    嗯 我是新来的Docker我需要在 Docker 容器中实现一个闪亮的应用程序 我有来自的图像https hub docker com r rocker shiny https hub docker com r rocker shiny 包
  • 操作链接到同一页面

    我需要创建一个 html 操作链接 相当于 a href Test Link a 或当前页面的操作链接 有人有例子吗 你可以尝试用这个 a href Url Action null Test Link a 帮手Url Action第一个参数
  • SQL 查询 C# 的 In 子句中的多个 ID [已关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我基本上想在 sql 查询的 In 子句中使用多个 iD 现在我有两个选择 一个是从文本框中获取逗号分隔的 ID 或者我可以放置一个列表视图
  • MySQL临时表是共享资源吗?

    我有一个使用临时表的 MySQL 存储过程 假设我的表名称是 temp 我用它来存储一些中间数据 它将在程序开始时创建 并在程序结束时删除 CREATE PROCEDURE p BEGIN CREATE TEMPORARY TABLE te
  • 堆中的 siftUp 和 siftDown 操作用于堆化数组

    假设 MAX HEAPIFY 操作 其中父元素值大于其子元素值 siftDown 将太小的节点与其最大的子节点交换 从而将其向下移动 直到它至少与两个节点一样大 在它下面 siftUp 将太大的节点与其父节点交换 从而移动 直到它不大于它上
  • 如何在 android O 的系统设置中对通知渠道进行排序

    我有预设的通知渠道顺序 可以更改 如何更改通知渠道的顺序 我尝试按channel id和channel name排序 但不起作用 我的解决方案有错误 我尝试在频道 ID 的开头添加频道数以进行排序 所以我有这个 56 server chan
  • 在iOS中,使用故事板,如何在容器视图内设置视图控制器?

    我在主故事板中创建并绘制了一个名为 AutocompleteVC 的自定义 UIViewController AutocompleteVC 将用于几个不同的地方 故事板和不同的维度 例如 在我的 Transit 故事板中 如下所示 有一个名
  • 浮点数的哈希函数

    我目前正在 C 中实现一个哈希表 并且正在尝试为浮点数创建一个哈希函数 我本来打算通过填充小数来将浮点数视为整数 但后来我意识到我可能会用大数字来溢出 有没有好的方法来散列浮点数 您不必直接给我该功能 但我想看到 理解不同的概念 Notes
  • 在 SQL*Plus 中将字符集设置为 UTF-8

    我有一个 SQL 脚本 其中包含以下语句 insert into employee fname lname values J rg M ller 我的数据库字符集设置为 AL32UTF8 但是当我在 SQL 中执行脚本时另外 德语字母 和
  • ggplot2,在 x 对数刻度上引入中断

    我有一个这样的情节 p lt ggplot geom line data myData aes x myData x y myData y scale x log10 scale y log10 我的x值是seq 9880000 12220