gpt4 book ai didi

在 ggplot 中反转日期时间(POSIXct 数据)轴

转载 作者:行者123 更新时间:2023-12-04 02:01:28 26 4
gpt4 key购买 nike

我正在尝试使用 ggplot 创建一个 POSIXct 时间图,并希望反转轴,但正在努力使其工作。
我一直在用scale_y_datetime ,因为在我的实际应用程序中,重要的是我可以控制此轴上的中断。

这是我的问题的一个示例,首先是正常排序,然后是我尝试反转轴。

# Some random dates and values to plot
MyData <-
structure(list(Date = structure(c(1492979809.99827, 1492602845.68722,
1493093428.90318, 1492605578.0691, 1492961342.65056, 1492771976.83545,
1493020588.88485, 1493057018.85104, 1492852011.23873, 1492855996.55059
), class = c("POSIXct", "POSIXt")), Value = c(4.52885504579172,
6.0024610790424, 8.96430060034618, 7.06435370026156, 5.08460514713079,
3.47828012891114, 6.29844291834161, 0.898315710946918, 1.44857675535604,
5.74641009094194)), .Names = c("Date", "Value"), row.names = c(NA,
-10L), class = "data.frame")

library(ggplot2)
library(scales)
ggplot(MyData, aes(x=Value, y=Date)) +
geom_point() +
scale_y_datetime(limits=c(min(MyData$Date),max(MyData$Date)))

产生这个:
DateTime MinMax Limits

如果我尝试反转 Y 轴,通过反转限制,我会丢失所有中断和数据,如下所示:
ggplot(MyData, aes(x=Value, y=Date)) +
geom_point() +
scale_y_datetime(limits=c(max(MyData$Date),min(MyData$Date)))

DateTime MaxMin Limits

有没有一种简单的方法可以反转日期时间轴?

最佳答案

在此帮助下 post从 Hadley Wickham 这里是如何获得反向日期时间比例:

c_trans <- function(a, b, breaks = b$breaks, format = b$format) {
a <- as.trans(a)
b <- as.trans(b)

name <- paste(a$name, b$name, sep = "-")

trans <- function(x) a$trans(b$trans(x))
inv <- function(x) b$inverse(a$inverse(x))

trans_new(name, trans, inverse = inv, breaks = breaks, format=format)

}

rev_date <- c_trans("reverse", "time")

ggplot(MyData, aes(x=Value, y=Date)) +
geom_point() +
scale_y_continuous(trans = rev_date)

这是情节:
enter image description here

关于在 ggplot 中反转日期时间(POSIXct 数据)轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43625341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com