ggplot2 中的小时刻度

2024-05-13

我正在处理就寝时间和醒来时间,因此我想创建一个具有 24 小时 x 轴的图表,从第一天中午 12 点开始,到第二天中午 12 点结束。这意味着晚上 11:59 之后,它应该再次从 0 开始。

同样的问题,仅涉及数字,我想创建一个从 10 到 20 的范围,20 后再次从 1 开始,直到 10。

这是我现在拥有的代码:

ggplot(SLEEP2, aes(x=as.POSIXct(bedT, format="%H:%M"), y=Jour))+ 
geom_rect(aes(xmin=as.POSIXct(sleepT, format="%H:%M"), xmax=as.POSIXct(wakeT, 
format="%H:%M"),ymin=(Jour-0.4), ymax=(Jour+0.4)),fill="orange", 
color="black")+ scale_x_datetime()

我想用酒吧来代表他们的睡眠时间......

我怎样才能做到这一点?我尝试了几种选择,但没有任何效果。 谢谢。


在底部编辑以包含给定的数据。

我不知道是否有一种方法可以像这样更直观地转换图表的轴。我无法弄清楚这一点。

正如其他人提到的,在代码中包含一些示例数据会很有帮助,以便解决方案可以使用它,而不必猜测和/或编写我们自己的数据。附上一张您拥有和/或想要的东西的图片也很好。

就像是:

R> head(SLEEP2)
...

无论如何,这是一种方法。它一点也不优雅,但很有效。

首先,制作一些在午夜达到峰值的“未转换”数据并将其绘制出来。我猜这看起来有点像你已经拥有的。

library(tidyverse)
library(lubridate)

start <- ymd_hm("20210101-0000")
# Make some pretend data. It's value is zero during the "day" and peaks around midnight.
secsday <- 60*60*12
df <- tibble(date_time = seq(start, start %m+% weeks(2), by=200)) %>%
    mutate(time = hms::as_hms(date_time),
           date = factor(date(date_time)),
           values = jitter(cos(day(date_time)/30+pi*as.numeric(time)/secsday), amount=1/40),
           values = ifelse(values>0, values, 0)
    )

# Plot original data.
ggplot(df, aes(time, values, colour=date)) +
    geom_line() +
    scale_x_time(breaks=hours(seq(0,24,6)), labels=c("midnight","6AM","noon","6pm","midnight")) +
    ggtitle('pre-transform')

接下来,将 AM 转换为 PM,将 PM 转换为 AM。

# Transform times so AM is PM and PM is AM (swap around noon).
dt <- df %>% mutate(time=
            ifelse(time>hm("12:00"), hms::as_hms(time)-secsday, hms::as_hms(time)+secsday)
        )
ggplot(dt, aes(time, values, colour=date)) +
    geom_line() +
    scale_x_time(breaks=hours(seq(0,24,6)), labels=c("noon", "6PM", "midnight", "6AM", "noon")) +
    ggtitle('post-transform')

我想知道是否有一种方法可以通过仅调整轴而不是数据来做到这一点。

根据您提供的数据并使用栏:

dat <- data.frame(Jour=1:5,
                  date=seq.Date(as.Date("2020-10-01"), as.Date("2020-10-05"), "day"),
                  sleeptime=c("22:30","21:10","23:00","23:00", "23:20"),
                  waketime= c("6:30", "7:00", "7:30", "6:25","7:10"))

# make fake dates for sleep and wake
dat <- dat %>% mutate(
            sleep = ymd_hm(paste(dat[1,]$date, sleeptime)),
            wake = ymd_hm(paste(dat[1,]$date, waketime)),
            wake = wake + ddays(ifelse(lubridate::hm(waketime)<lubridate::hm(sleeptime), 1, 0))
        )

ggplot(dat, aes(xmin=sleep, xmax=wake)) +
    scale_x_datetime(breaks=ymd(dat[1,]$date) + hours(seq(12,36,length.out=5)),
                     labels=c("noon", "6PM", "midnight", "6AM", "noon"),
                     limits=ymd(dat[1,]$date) + hours(seq(12,36,length.out=2))
                     ) +
    geom_rect(ymin=0.25, ymax=0.75, fill='darkgreen') +
    ylim(0,1) +
    facet_grid(rows = vars(date)) +
    theme(axis.title = element_blank()) +
    theme(axis.text.y = element_blank(),
          axis.ticks = element_blank()
    )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ggplot2 中的小时刻度 的相关文章

  • dplyr::mutate 添加多个值

    网上有几个与此相关的问题dplyr Github 存储库 https github com hadley dplyr已经 并且至少有一个相关的问题 但没有一个问题完全涵盖了我的问题 我认为 在 dplyr mutate 调用中添加多列 ht
  • 列表列表中出现的频率

    我有一个列表列表 其中每个列表都已排序 我想调查的是某个元素在特定位置出现了多少次 例如 pnc 曾两次出现在第二位 一次出现在第三位 我的数据结构如下 dput degree l list c schwab 0 pnc 0 0344827
  • 将角色分成几部分

    我观察到以下特征 l lt mod range1 seq m n 0 1 range2 seq 2 2 0 1 range3 seq 2 2 0 1 在 R 中使用正则表达式我想要拆分l在以下结构中 1 mod range1 seq m n
  • 如何删除括号内的值的行?

    我正在使用以下数据框 Name Height Eric 64 Joe 67 Mike 66 Nick 72 Dave 69 Steve 73 我想删除 名称 列以左括号 开头的所有行 因此最终的数据框如下所示 Name Height Eri
  • R 中自定义函数的等高线图

    我正在使用一些自定义函数 我需要根据参数的多个值为它们绘制轮廓 这是一个示例函数 我需要画这样的等高线图 任何想法 Thanks 首先你构造一个函数 fourvar它将这四个参数作为参数 在这种情况下 您可以使用 3 个变量来完成此操作 其
  • 使用 data() 的 R 包命名空间问题 -- 找不到数据集

    我在尝试在我自己的包中导入包 即 robfilter 时遇到了问题 我尝试使用它的方法之一 adore filter 在这一行失败 data critvals 出现错误 未找到数据集 critvals 如果我通过 require robfi
  • 在前两个冒号上分割字符串

    我想在前两个冒号上拆分一列字符串 但不在任何后续冒号上拆分 my data lt read table text my string some data 123 34 56 78 100 87 65 43 21 200 a4 b6 c888
  • R 中的金字塔图

    对于示例数据集 我按国家 地区创建了一个金字塔图 显示人口中男性和女性超重的水平 library plotrix xy males overweight lt c 23 2 33 5 43 6 33 6 43 5 43 5 43 9 33
  • R:几个单独图的重新排序因子水平

    我正在尝试从同一个 data frame 创建多个单独的图 每个图的 y 轴上的因子水平顺序不同 每个图都应该对 y 上的因子水平进行递减排序 我知道这可以为每个图手动完成 但我正在寻找一种更有效和更优雅的方法 因为我需要创建相当多的图 这
  • 在函数中调用其他列的控制流程

    我正在尝试在给定条件的情况下连接到函数中的其他列 本质上 我想让数据框在给定条件的情况下从长到宽 其中一列中的这些值是NA相对于同一行中具有值的另一列 转动NAs转化为特定的数字 尽管分配的值必须是特定于列的 因此 如果2010 has N
  • R data.table:在当前测量之前对出现次数进行计数

    我有一组在几天内进行的测量结果 测量次数通常为 4 任何测量中可以捕获的数字范围为 1 5 在现实生活中 给定测试集 范围可能高达 100 或低至 20 我想每天计算每个值在当天之前发生的次数 让我用一些示例数据来解释 test data
  • rle 命令帮助

    我在使用 rle 命令时遇到了一些麻烦 该命令旨在找到参与者连续达到 8 个连续参与者的点 例如 如果 x lt c 0 1 0 1 1 1 1 1 1 1 1 1 我想返回值 11 感谢 DWin 我一直在使用这段代码 which rle
  • R 如何按行值进行分组、拆分或子集

    这是上一个问题的延续R 如何按行值分组 分裂 https stackoverflow com questions 64602607 r how to group by row value split 输入数据帧的变化是 id str c x
  • 无法将 bigrquery 与标准 sql 一起使用

    我正在 R ipython 笔记本 相对 R 新手 中工作 并尝试使用 bigrquery 从 Google Big Query 中提取数据 我被告知这应该很简单 但使用标准 sql 提取不起作用 这是我的代码 require bigrqu
  • 按元素名称组合/合并列表

    我有两个列表 其元素的名称部分重叠 我需要将其逐个元素合并 组合成一个列表 gt lst1 lt list integers c 1 7 letters letters 1 5 words c two strings gt lst2 lt
  • 如何将xtable对象放置在页面左侧

    问题 如何将 xtable 对象放置到页面左侧或如何全局禁用居中 我正在努力弄清楚如何将 xtable 对象放置在左侧 我有一个 Rmd 文件 所有这些都转到相关的 r 块 require xtable df lt data frame x
  • 三角形内的热图

    考虑以下示例 triangle lines lt data frame X c 0 0 1 1 0 5 0 5 Y c 0 0 0 0 1 1 grp c 1 2 1 3 2 3 df lt matrix c c 0 2 0 5 0 8 c
  • R 版本 4.0.0 上的 ROracle

    当尝试使用 ROracle 时 我收到以下错误消息 gt library ROracle Error package or namespace load failed for ROracle package ROracle was inst
  • 包含多行 LaTeX 方程的 R 帮助页面

    我正在编写 R 包文档roxygen2 我想将以下多行方程插入到帮助页面中 但我的 LaTeX 代码没有被渲染 hello2 description deqn F t begin cases alpha t f L t 1 alpha t
  • R 中的多面点阵图,例如线框:如何删除条带并添加 1 行字幕

    我使用这种功能 来自iris数据集 model test lt lm Sepal Length Petal Length Sepal Width Petal Width Species 2 data iris gg lt expand gr

随机推荐

  • java中如何格式化日期字符串? [复制]

    这个问题在这里已经有答案了 您好 我有以下字符串 2012 05 20T09 00 00 000Z 我想将其格式化为 20 05 2012 9am 在java中如何做到这一点 Thanks 如果您正在寻找针对您的特定情况的解决方案 那么它将
  • 原生插入符位置 macos cocoa

    我希望能够使用 cocoa 或 appleScript 获取 Mac High Sierra 中任何应用程序内的全局插入符位置 我已经使用 NSEvent 来获取键盘和鼠标挂钩 但是有没有办法获取插入符位置挂钩 插入符号与鼠标位置不同 它会
  • 如何在 Emgu CV 项目中利用 OpenCL

    我是使用 Emgu CV 的新手 并开始创建小型示例项目 例如面部检测 眼睛检测等 如果我可以利用 OpenCL 来加速使用 GPU 的过程 那就太好了 否则 当我降低scaleFactor时 它会导致大量的CPU利用率 我怎样才能做到这一
  • 非相邻单元格作为数组函数的输入(MIN 和 ISBLANK)

    提出了这个问题 由于具体问题的答案是一个拼写错误 因此被删除 https stackoverflow com questions 59289065 excel non adjecent cells as input to array fun
  • 为什么这些向量不相等?

    我创建了两个向量 并用push back填充另一个向量 用索引填充另一个向量 我希望这些是相等的 但事实并非如此 有人可以解释一下这是为什么吗 include
  • jhipster-gateway API 部分中未列出 API-first Rest 端点 (swagger-ui)

    使用jhipster 5 7 2 我创建了一个 api 网关和两个微服务 在第一个中 我创建了一个实体 它在网关后面完美运行 网关显示生成的实体的 api 端点 我生成了第二个微服务 但这次我已经在 yml 文件中定义了一个 api 因此我
  • 三-mtl-loader 错误:THREE.MeshPhongMaterial:.shading 已被删除 -> 对象不可见

    昨天我问了这个问题 未捕获的类型错误 THREE MTLLoader 不是构造函数 2 0 https stackoverflow com questions 47741644 uncaught typeerror three mtlloa
  • Chrome 75 正则表达式,“S”匹配奇怪的 unicode 范围

    我们在最新版本的 Chrome 75 上有一个奇怪的错误 它取代了S to 83 console log AZERTYUIOPQSDFGHJKLMWXCVBN replace u00A0 u9999 lt gt gim char gt ch
  • 如何修复 SSIS“文件/进程不在路径中”警告?

    SSIS 附带了许多解决数据获取和集成问题的任务 但它缺少的一项任务是用于通过 HTTP 下载文件的 HTTP 任务 为了解决这个问题 我安装了Wget http gnuwin32 sourceforge net packages wget
  • 读取FCS文件

    我正在研究流式细胞术 我想使用 python 解析 fcs 文件 我在互联网上研究过 有一个模块fcm但这是针对Linux操作系统的 我正在Windows上工作 我想知道如何使用 python 解析 Windows 中的 fcs 文件 如果
  • Rails 3.1 和 Asset Pipeline:使用 Capistrano 进行部署时遇到的问题

    我刚刚从 Ruby on Rails 3 0 10 切换到 3 1 0 我想使用 Capistrano gem 部署我的资产文件 我的本地计算机是运行 Snow Leopard 的 MacO 我的远程计算机运行的是 Ubuntu 10 04
  • 在 flutter 中将 JSON 解析为 Map

    我收到后端的响应 measurements pm10 name pm10 value 20 8647 unit g m pm25 name pm10 value 20 8647 unit g m o2 name pm10 v
  • 如何让 UITableview 在重新加载时转到页面顶部?

    当我调用以下命令时重新加载表数据时 我试图让 UITableview 转到页面顶部 void pickerView UIPickerView pickerView didSelectRow NSInteger row inComponent
  • Scala 2.9 无法在 Windows XP 上运行“hello world”示例

    我正在尝试在 Windows XP 上使用 scala 2 9 1 Final 运行 HelloWorld 示例 object HelloWorld extends App println Hello World 文件另存为Hello sc
  • 您将如何创建“手动”django 迁移?

    我发现我可以使用 django 项目中的 postgres 数据库设置列的默认值migrations RunSQL some sql 我目前正在通过添加列 makemigrations 然后删除列 makemigrations 然后手动修改
  • jQuery hide() 动画向右滑动

    使用 jQuery 的hide 使用可选的持续时间参数的函数 我可以在我的网站上获得一些警报框 以优雅地滑出屏幕并消失 隐藏动画的默认方向似乎是向左滑动 尽管此行为未在hide 定义页 http api jquery com hide 我需
  • 我应该在我的 iOS Objective-C 项目中使用它吗?

    Xcode 中的 构建设置 中的 Mach O 类型是什么 应该设置什么 它有这些选项 可执行文件 动态库 捆绑包 静态库 可重定位对象文件 自从我将其从可执行文件更改为静态库以来 我遇到了错误 Apple Mach O 链接器错误组 我的
  • Google Tag Assistant 询问 Feed ID

    我被要求使用旧的再营销跟踪代码升级现有网站 如下所示
  • 用于选择矩形内文本的编辑器

    我经常发现自己在处理某些文本时想要排除文本的特定部分 例如 40 行的前三个字符 我能想到的最快方法是绘制一个矩形并复制文本 我主要使用 Windows 但我确信 grep 或类似的东西可以用少量代码来完成此操作 我最好的方法是打开命令提示
  • ggplot2 中的小时刻度

    我正在处理就寝时间和醒来时间 因此我想创建一个具有 24 小时 x 轴的图表 从第一天中午 12 点开始 到第二天中午 12 点结束 这意味着晚上 11 59 之后 它应该再次从 0 开始 同样的问题 仅涉及数字 我想创建一个从 10 到