gpt4 book ai didi

r - ggplot2 本地和 Shiny 托管输出之间的差异

转载 作者:行者123 更新时间:2023-12-02 02:09:03 25 4
gpt4 key购买 nike

我注意到本地输出和 Shiny 应用程序之间的 ggplot 渲染存在意外差异。轴标签完全不同:

本地: enter image description here Shiny 的应用程序: enter image description here

两个图的轴相差整整 1 天 - 多么奇怪!发布到 Shiny 的过程中发生了什么?

数据

data.df <- structure(list(Report.Date = structure(c(1430434800, 1433026800, 
1435618800, 1438297200, 1440975600, 1443567600, 1430434800, 1433026800,
1435618800, 1438297200, 1440975600, 1443567600), tzone = "", class = c("POSIXct",
"POSIXt")), variable = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 2L), .Label = c("Datasets.Deposited", "Datasets.Published"
), class = "factor"), value = c(0L, 21L, 32L, 43L, 56L, 73L,
0L, 4L, 9L, 21L, 29L, 49L)), .Names = c("Report.Date", "variable",
"value"), row.names = c(NA, -12L), class = "data.frame")

本地代码

library(ggplot2)
library(scales)
base <- ggplot(data.df, aes(Report.Date, value))
plot <- base + geom_area(aes(group = variable, fill= variable), position = 'identity') + geom_point(aes(color = series), color = "black")
plot <- plot + xlab("Date") + ylab("Number of Deposits/Published")
plot +
scale_y_continuous(breaks = seq(0,round(max(data.df$value)+5,-1),5)) +
scale_x_datetime(breaks = date_breaks("1 month"), labels = date_format("%Y-%b-%d"), minor_breaks = "1 month") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

Shiny

ui.R

shinyUI(
fluidPage(
plotOutput("plot")
)
)

服务器.R

library(ggplot2)
library(scales)
shinyServer(
function(input, output){
output$plot <- renderPlot({
data.df <-
base <- ggplot(data.df, aes(Report.Date, value))
plot <- base + geom_area(aes(group = variable, fill= variable), position = 'identity') + geom_point(aes(color = series), color = "black")
plot <- plot + xlab("Date") + ylab("Number of Deposits/Published")
plot +
scale_y_continuous(breaks = seq(0,round(max(data.df$value)+5,-1),5)) +
scale_x_datetime(breaks = "1 month", labels = date_format("%d-%b-%Y"), minor_breaks = "1 month") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
}
)
}
)

最佳答案

自 Unix 纪元为 2015 年 4 月 30 日 23:00:00 GMT 以来的 1430434800 秒,这非常接近一天结束的时间。

何时 tz as.POSIX* 的参数函数丢失或为空字符串,current (machine-dependent) timezone will be used .

看来您当前位于 GMT 或西边,而 R Shiny 服务器位于 GMT+1 或东边。这两台计算机将同一固定时间点评估为不同的“挂钟”时间,并且由于引用点接近午夜,因此存在人为更改日期。

要解决这个问题,您应该提供时区定义,这样 POSIX* 函数就不必回退到不可预测的默认值。

看起来你可以通过给出 tzone 来做到这一点属性“GMT”值:

data.df <- structure(list(Report.Date = structure(c(1430434800, 1433026800,
1435618800, 1438297200, 1440975600, 1443567600, 1430434800, 1433026800,
1435618800, 1438297200, 1440975600, 1443567600), tzone = "GMT", class = c("POSIXct",
"POSIXt")), …

关于r - ggplot2 本地和 Shiny 托管输出之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33002068/

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