我正在尝试绘制具有周数的数据(如01-2017、02-2017等[也包括月份(如2017年1月,2017年2月等)。以及按季度,如Q1-2017,Q2-2017] )在x轴上,而整数变量在y轴上。
问题在于,如下图所示,正在按顺序对x轴进行排序。
在上图中,您可以看到2017年之前属于2018年的几周。
在上图中,您可以看到已排序的月份(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不起作用)。
答案 0 :(得分:1)
考虑将时间单位生成为format
来创建因子矢量,这就是x轴按字母顺序排序的原因。因素可能会在情节上转化为类别字段。但是,在分配因子之前,先按 Date 排序一阶数据帧:
# 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))
})