在 R 中可视化项目跟踪器

Visualizing a project tracker in R

有没有人对如何使用 R 可视化这样的东西有任何想法?

基本上我想制作一个图表来跟踪几个项目中不同工作的完成百分比。完成百分比应该用颜色编码(在示例中,深蓝色表示作业完成 100%,白色表示完成 0% 等) 下面是一些制作数据框的示例代码:

project <- c('Project 1', 'Project 2', 'Project 3', 'Project 4')

job1 <- c(100, 100, NA, 100)

job2 <- c(100, 100, NA, 100)

job3 <- c(100, NA, NA, NA)

job4 <- c(NA, 100, 100, 100)

job5 <- c(50, 100, 100, 100)

job6 <- c(0, 40, 100, 100)

df <- data.frame(project, job1, job2, job3, job4, job5, job6)

我试过甘特图,但由于没有时间数据,所以无法正常工作。我试过条形图,但它没有用,因为一些项目有 NA 或 0 值,后跟 100/50 等,所以工作没有排队。我还尝试了一个热图,但这也没有真正起作用,因为 NA 值和 0 值之间需要有明显的区别,即 NA 表示该工作不适用于该项目,而 0 表示该工作没有还没开始。

如有任何建议,我们将不胜感激!

首先你得把数据改成长格式; tidyr::pivot_longer() 这样做。 ggplot2::geom_tile() 然后可以用来创建热图。

library(tidyr)
library(ggplot2)
df |> 
  pivot_longer(-project) |> 
  ggplot(aes(name, project, fill = value)) +
  geom_tile()

您可以进一步调整它,以获得更接近您的示例的结果:

library(tidyr)
library(ggplot2)
library(forcats)
library(dplyr)

df |> 
  pivot_longer(-project) |> 
  mutate(project = fct_rev(factor(project))) |> 
  ggplot(aes(name, project, fill = value)) +
  geom_tile(color = "grey", size = 3) +
  scale_x_discrete(position = "top") +
  labs(x ="", y = "")

基于DT(数据table)的解决方案:

library(DT)
options(DT.options = list(pageLength = 5))
df = as.data.frame(cbind(matrix(round(rnorm(50), 3), 10), sample(0:1, 10, TRUE)))

# create 19 breaks and 20 rgb color values ranging from white to red
brks <- quantile(df, probs = seq(.05, .95, .05), na.rm = TRUE)
clrs <- round(seq(255, 40, length.out = length(brks) + 1), 0) %>%
  {paste0("rgb(255,", ., ",", ., ")")}
datatable(df) %>% formatStyle(names(df), backgroundColor = styleInterval(brks, clrs))

会给你一个很好的互动 html table 看起来像这样

示例来自,如需了解更多信息,请访问:

https://rstudio.github.io/DT/010-style.html