当前位置: 首页 > 知识库问答 >
问题:

使用SQL UNIX_TIMESTAMP()后,如何在ggplot轴上显示一天中的时间?

桑飞语
2023-03-14

我正在处理由类似于以下的查询返回的数据:

SELECT UNIX_TIMESTAMP(timestamp) DIV 300 AS period, COUNT(*) as count from tbl
GROUP BY UNIX_TIMESTAMP(timestamp) DIV 300

它将计数分组为5分钟间隔,然后导入R,如下所示:

> head(mydata)
   period count
1 5391360     2
2 5391361     5
3 5391362     4
4 5391363     3
5 5391364     5
6 5391365     5

现在我想用ggplot来绘制它,其中x轴显示以小时间隔开始的实际时间,01:00、02:00、03:00等

有没有一种简单的方法可以做到这一点,而不用手工创建一个时间向量?

如果有用,数据的标题为:

structure(list(period = 5391360:5391365, count = c(2L, 5L, 4L, 
3L, 5L, 5L)), row.names = c(NA, 6L), class = "data.frame")

共有1个答案

林华皓
2023-03-14

在这个解决方案中,我首先创建一个datetime值的向量。向量DF1$perio乘以300,并强制为类“POSIXCT。然后保留小时和分钟。

period <- as.POSIXct(df1$period*300, origin = "1970-01-01")
period <- format(period, "%H:%M")

library(ggplot2)

ggplot(data = data.frame(period, count = df1$count),
       mapping = aes(period, count)) +
  geom_col(position = position_dodge())
 类似资料:
  • 问题内容: 我正在使用JFreeChart显示一个月的每一天的值。现在,我想让我的x轴显示一个月中的星期而不是天。目前,我的图表的值在y轴上是double,在x轴上是int。 我正在 将日期范围设置为一个月,并且 将x轴的刻度显示在正确的位置。我不想显示天(0、7、14、21、28),而是希望它们是几周(0、1、2、3、4)。 那有可能吗,我将如何做到呢? 问题答案: 您应该像时间一样使用a 作为

  • 我目前有2个屏幕,一个所有的消息屏幕,其中包括我参与的所有聊天和一个聊天屏幕,这是实际的聊天本身。 在我的聊天屏幕中,我成功地实现了套接字,所以当两个用户同时在聊天屏幕上时,消息就会实时交换。 客户 ChatScreen.js AllMessagessCreen.js

  • 问题内容: 我试图限制用户只选择今天之后的日期,或者选择另一个以后的日期, 我在JCalendar API 上看到了 一些可以帮助我但我什么都没找到的东西..我该怎么办? 问题答案: 我认为组件上没有直接的方法可以做到这一点。我知道的一种方法是使用-当您将起始日期设置为当前日期时,所有前一天的单元格,年/月下拉列表都将被禁用。 例: 这将禁止选择当前日期之前和2015年5月5日之后的任何日期 请注

  • 问题内容: 当我这样做时: 我懂了 我如何只花2天就没有上班时间。基本上,如果视频是在不到一天前发布的,那么它应该说X个小时前,然后应该像X天之前那样在几天之内算完,然后再数周。我只是不想1分钟5分钟前或2天13分钟前。只是第一部分。 我查看了人性化文档,但找不到所需的文档。 问题答案: Django有一个内置的模板过滤器 ,可提供与上述相同的输出。以下过滤器仅去除逗号后的第二部分:

  • 我有一张图表,我已经知道我需要的刻度数。有3个是分组条形图。我在绞尽脑汁想怎么强迫它。现在它显示0到我的数据集中的任何数字,并根据需要自动缩放。 默认情况下,假设我使用数字来缩放,但在这种情况下,它是Y轴上的正、中性、负(字面意思是这些标签),它们是与X轴上的特定日期相关的数据点(有2个分组条标记为AM/PM)。 图表。js文档似乎没有解释如何在ticks配置的数字之外进行调整,我也不确定如何将其

  • 当它悬停在同一轴的任何一个数据中时,我想显示同一工具提示中的签入和apointment的数量。