【问题标题】:R - how to plot weeks, months and quarters of years unsorted in plotly?R - 如何绘制未排序的周、月和季度?
【发布时间】:2019-08-24 14:37:09
【问题描述】:

我正在尝试绘制具有周数的数据(如 01-2017、02-2017 等[还有月份,如 2017 年 1 月、2017 年 2 月等,以及像 2017 年第一季度、2017 年第二季度这样的季度) ) 在 x 轴上,在 y 轴上是一个整数变量。

问题是,plotly 正在对 x 轴进行排序,如下图所示。

在上图中,您可以看到属于 2018 年的几周在 2017 年之前。

在上图中,您可以看到已排序的月份(2017 年 11 月至 2018 年 2 月之后)。

我可以在this stackoverflow answer 的帮助下获得排序日期。 以下是我为根据日期生成周数、月份和季度所做的工作(link to my data):

data <- read.csv("dummy wait times data.csv", header = TRUE)
data$Date <- as.Date(data$Date, "%d-%m-%y")
data$weeks <- format(data$Date, "%U-%Y")
data$months <- format(data$Date, "%B-%Y")
data$quarters <- paste(quarters(data$Date), format(data$Date, "%Y"), sep = "-")

此外,经过大量过滤后,此图将显示在闪亮的应用程序中(平均值是在选择月份、周或季度后计算的)。所以,我的情节代码是:

plot_ly(data = filtered_data(),
        # since the column names returned by aggregation function change, let's plot using indexes.
        x = ~column_with_some_sort_of_date,
        y = ~integer_column,
        type = "bar",
        # using the reactive department input and splitting the data.
        split = ~categorical_column)

[[“column_with_some_sort_of_date”可能是每周或每月或每季度基于闪亮应用中的selectInput。 “categorical_column”在我的数据中是“Department”(这在闪亮的应用程序中有一个复选框输入(checkboxGroupInput)。]]

所以,请帮我对日期进行排序并绘制它们。我也准备学习任何其他交互式绘图库(ggplotly 不起作用)。

【问题讨论】:

    标签: r datetime shiny plotly interactive


    【解决方案1】:

    考虑将时间单位生成为因子,因为format 创建字符向量,这就是 x 轴按字母顺序排序的原因。因素可以在情节上转化为分类字段。但是,在分配因素之前,日期的一阶数据框:

    # READ DATA
    data <- transform(read.csv("dummy wait times data.csv", header = TRUE),
                      Date = as.Date(Date, "%d-%m-%y"))
    
    # ORDER DATA FRAME BY DATE
    data <- data.frame(with(data, data[order(Date),]), 
                       row.names = NULL)
    
    # ASSIGN ORDERED FACTORS
    data <- within(data, {
        weeks <- format(Date, "%U-%Y")
        weeks <- factor(weeks, levels = unique(weeks))
    
        months <- format(Date, "%B-%Y")
        months <- factor(months, levels = unique(months))
    
        quarters <- paste(quarters(Date), format(Date, "%Y"), sep = "-")
        quarters <- factor(quarters, levels = unique(quarters))
    })
    

    【讨论】:

    • 太棒了!很高兴为您提供帮助。祝您编码愉快!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2021-03-11
    • 1970-01-01
    相关资源
    最近更新 更多