Billboarder.R,具有多个要绘制的变量的分组线图
Billboarder.R, grouped linechart with more than one variable to plot
我正在尝试映射我的表格。它绘制在 x 轴上,x 轴包含一年中的第几周 (1-53),y 轴是特定百分比 (0-100)。在此图中,我尝试绘制两条线,一条用于变量 "Task",另一条用于变量 "Area"。然而,由于 x 轴只显示一年,我还希望每年换一条线。
我的数据如下:
head(dt.Ratio()[Week %in% c(52, 53, 1, 2, 3)])
year Week Area Task
1: 2019 52 63.68 28.39
2: 2019 53 3.23 0.00
3: 2020 1 58.58 25.43
4: 2020 2 61.54 31.75
5: 2020 3 52.33 27.10
剧情是这样的:
billboarder() %>%
bb_linechart(dt.Ratio(), show_point = TRUE, type = "area") %>%
bb_x_axis(label = list(text = "Week", position = "outer-right"),
tick = list(culling = list(max = 1))) %>%
bb_y_axis(label = list(text = "Ratio of hours clocked as task", position = "outer-right")) %>%
bb_y_grid(show = TRUE) %>%
bb_colors_manual(opacity = 0.25)
我尝试了很多方法来处理 bb_linechart 中的映射变量,但找不到正确的映射。我可以让它适用于区域或任务,也可以不按年份分组,但我还没有找到包含所有 4 行的解决方案(2019 年和 2020 年,变量任务和区域)
您好,您需要稍微转换一下数据。
第一个选项:使用日期
library(data.table)
library(billboarder)
dt <- fread(text = "year Week Area Task
2019 52 63.68 28.39
2020 1 58.58 25.43
2020 2 61.54 31.75
2020 3 52.33 27.10")
# Convert date
dt[, date := as.Date(paste(year, Week, 1, sep = "-"), format = "%Y-%U-%u")]
# Pivot data
dt <- melt(
data = dt,
id.vars = "date",
measure.vars = c("Area", "Task")
)
# Plot
billboarder() %>%
bb_linechart(dt, bbaes(x = date, y = value, group = variable), show_point = TRUE, type = "area") %>%
bb_x_axis(label = list(text = "Week", position = "outer-right"),
tick = list(culling = list(max = 1))) %>%
bb_y_axis(label = list(text = "Ratio of hours clocked as task", position = "outer-right")) %>%
bb_y_grid(show = TRUE) %>%
bb_colors_manual(opacity = 0.25)
第二个选项:将年和周连接成字符串
library(data.table)
library(billboarder)
dt <- fread(text = "year Week Area Task
2019 52 63.68 28.39
2020 1 58.58 25.43
2020 2 61.54 31.75
2020 3 52.33 27.10")
# Or just concatenate year and week
dt[, year_week := paste(year, Week, sep = "-")]
# Pivot data
dt <- melt(
data = dt,
id.vars = "year_week",
measure.vars = c("Area", "Task")
)
# Plot
billboarder() %>%
bb_linechart(dt, bbaes(x = year_week, y = value, group = variable), show_point = TRUE, type = "area") %>%
bb_x_axis(
type = "category",
label = list(text = "Week", position = "outer-right"),
tick = list(culling = list(max = 1))
) %>%
bb_y_axis(label = list(text = "Ratio of hours clocked as task", position = "outer-right")) %>%
bb_y_grid(show = TRUE) %>%
bb_colors_manual(opacity = 0.25)
你必须在 bb_x_axis
中使用 type = "category"
,结果有点不同:
我正在尝试映射我的表格。它绘制在 x 轴上,x 轴包含一年中的第几周 (1-53),y 轴是特定百分比 (0-100)。在此图中,我尝试绘制两条线,一条用于变量 "Task",另一条用于变量 "Area"。然而,由于 x 轴只显示一年,我还希望每年换一条线。
我的数据如下:
head(dt.Ratio()[Week %in% c(52, 53, 1, 2, 3)])
year Week Area Task
1: 2019 52 63.68 28.39
2: 2019 53 3.23 0.00
3: 2020 1 58.58 25.43
4: 2020 2 61.54 31.75
5: 2020 3 52.33 27.10
剧情是这样的:
billboarder() %>%
bb_linechart(dt.Ratio(), show_point = TRUE, type = "area") %>%
bb_x_axis(label = list(text = "Week", position = "outer-right"),
tick = list(culling = list(max = 1))) %>%
bb_y_axis(label = list(text = "Ratio of hours clocked as task", position = "outer-right")) %>%
bb_y_grid(show = TRUE) %>%
bb_colors_manual(opacity = 0.25)
我尝试了很多方法来处理 bb_linechart 中的映射变量,但找不到正确的映射。我可以让它适用于区域或任务,也可以不按年份分组,但我还没有找到包含所有 4 行的解决方案(2019 年和 2020 年,变量任务和区域)
您好,您需要稍微转换一下数据。
第一个选项:使用日期
library(data.table)
library(billboarder)
dt <- fread(text = "year Week Area Task
2019 52 63.68 28.39
2020 1 58.58 25.43
2020 2 61.54 31.75
2020 3 52.33 27.10")
# Convert date
dt[, date := as.Date(paste(year, Week, 1, sep = "-"), format = "%Y-%U-%u")]
# Pivot data
dt <- melt(
data = dt,
id.vars = "date",
measure.vars = c("Area", "Task")
)
# Plot
billboarder() %>%
bb_linechart(dt, bbaes(x = date, y = value, group = variable), show_point = TRUE, type = "area") %>%
bb_x_axis(label = list(text = "Week", position = "outer-right"),
tick = list(culling = list(max = 1))) %>%
bb_y_axis(label = list(text = "Ratio of hours clocked as task", position = "outer-right")) %>%
bb_y_grid(show = TRUE) %>%
bb_colors_manual(opacity = 0.25)
第二个选项:将年和周连接成字符串
library(data.table)
library(billboarder)
dt <- fread(text = "year Week Area Task
2019 52 63.68 28.39
2020 1 58.58 25.43
2020 2 61.54 31.75
2020 3 52.33 27.10")
# Or just concatenate year and week
dt[, year_week := paste(year, Week, sep = "-")]
# Pivot data
dt <- melt(
data = dt,
id.vars = "year_week",
measure.vars = c("Area", "Task")
)
# Plot
billboarder() %>%
bb_linechart(dt, bbaes(x = year_week, y = value, group = variable), show_point = TRUE, type = "area") %>%
bb_x_axis(
type = "category",
label = list(text = "Week", position = "outer-right"),
tick = list(culling = list(max = 1))
) %>%
bb_y_axis(label = list(text = "Ratio of hours clocked as task", position = "outer-right")) %>%
bb_y_grid(show = TRUE) %>%
bb_colors_manual(opacity = 0.25)
你必须在 bb_x_axis
中使用 type = "category"
,结果有点不同: