- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在以半小时为间隔绘制时间序列数据,使用 geom_col() 显示每个间隔内计数的鸟类数量。 ggplot2 以 x 轴刻度线为中心绘制每个条形图,但我需要每个条形从 开始右 每个刻度线。换句话说,我需要每个条形跨越其相应的半小时间隔的宽度。
我在这些帖子中尝试了建议的解决方案,但没有运气:
``` r
library(lubridate)
#>
#> Attaching package: 'lubridate'
#> The following objects are masked from 'package:base':
#>
#> date, intersect, setdiff, union
library(ggplot2)
library(tidyverse)
df <- data.frame(
date = c("2019-05-16", "2019-05-16", "2019-05-16", "2019-05-16", "2019-05-16", "2019-05-16", "2019-05-16", "2019-05-16"),
time = c("16:30:00", "17:00:00", "17:30:00", "18:00:00", "18:30:00", "19:00:00", "19:30:00", "20:00:00"),
count = c(5, 100, 14, 342, 59, 321, 44, 98),
stringsAsFactors = FALSE)
datetime_df <- df %>%
mutate(time_stamp = paste(date, time) %>% as_datetime())
plot <- ggplot(datetime_df, aes(x = time_stamp, y = count)) +
geom_col() +
scale_x_datetime(breaks = scales::date_breaks("30 mins"), date_labels = "%H:%M",
limits = c(as_datetime("2019-05-16 16:00:00"),
as_datetime("2019-05-16 20:30:00"))) +
scale_y_continuous(expand = c(0,0), breaks = seq(0, 500, by = 50), limits = c(0,500))
创建于 2020-10-01 由
reprex package (v0.3.0)
最佳答案
您可以通过在时间上增加 15 分钟来轻松模仿这一点:
plot <- ggplot(datetime_df, aes(x = time_stamp + minutes(15), y = count)) +
geom_col() +
scale_x_datetime(breaks = scales::date_breaks("30 mins"), date_labels = "%H:%M",
limits = c(as_datetime("2019-05-16 16:00:00"),
as_datetime("2019-05-16 20:30:00"))) +
scale_y_continuous(expand = c(0,0), breaks = seq(0, 500, by = 50), limits = c(0,500))
plot
width
geom_col
中的参数以匹配添加的分钟数。经过一些试验和错误后,这似乎有效:
half_width_in_min = 13
plot <- ggplot(datetime_df, aes(x = time_stamp + minutes(half_width_in_min ), y = count)) +
geom_col(width = 60 * 24 * 1.25 * half_width_in_min / 15) +
scale_x_datetime(breaks = scales::date_breaks("30 mins"), date_labels = "%H:%M",
limits = c(as_datetime("2019-05-16 16:00:00"),
as_datetime("2019-05-16 20:30:00"))) +
scale_y_continuous(expand = c(0,0), breaks = seq(0, 500, by = 50), limits = c(0,500))
plot
关于r - 使用 scale_x_datetime 和 geom_col 移动 x 轴刻度,使条形不以刻度线为中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64148989/
我正在尝试使用 scale_x_datetime 来优化我的 x 轴。我从 ggplot2 website 阅读了文档,但此站点中的示例会生成与我遇到的错误相同的错误: > library(ggplo
这不是重复项,因为假定的重复项中的方法均不适用于此处。它们都不会导致警告消失。 事实上,我从下面的 Konrad 那里得到了答案——使用 suppressMessages。在被断言为可能重复的链接中,
是否可以在使用 ggplot2 的 scale_x_datetime 时从 x 轴上显示的小时中去除前导零? 最佳答案 我们可以使用 date_format来自 scales包裹: library(g
sessionInfo() R version 3.2.2 (2015-08-14) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under:
我想获得带有日期、工作日和时间作为 x 轴标签的漂亮图表。 test <- data.frame(date=seq(as.POSIXct("2012-02-09 00:00:00",tz="CET")
我花了一些时间试图弄清楚为什么在应用 scale_x_datetime 时小时刻度会发生变化。我试图在创建日期/时间列时提供时区。我使用了包 scales 中的 ggplot 和 scale_x_da
我正在以半小时为间隔绘制时间序列数据,使用 geom_col() 显示每个间隔内计数的鸟类数量。 ggplot2 以 x 轴刻度线为中心绘制每个条形图,但我需要每个条形从 开始右 每个刻度线。换句话说
我是一名优秀的程序员,十分优秀!