首页 > 解决方案 > 是否有任何 R 包可用于构建 KPI 树(提供示例)?

问题描述

我想使用 R 为某些数据提供可视化层。

我正在寻找的视觉输出是这样的(归功于这篇文章):

在此处输入图像描述

标签: r

解决方案


看起来 ggplot 拥有答案:

# Create data frame to house box information
df.vertices <- data.frame(
    metric = c('Revenue per User', 'Revenue per Delivery', 'Deliveries per User', 'Revenue per Item', 'Items per Delivery','Deliveries per Orderer','Orderers per User'),
    row = c(10,10,10,3,3,3,3),
    column = c(4,12,20,4,12,20,28),
    color = c('blue','red','green','red','red','green','green')
) %>%
mutate(numerator = sub('\\ per.*', '', metric)) %>%
mutate(denominator = sub('.*per ', '', metric))



# Create data frame to house connector lines information
df.edges <- data.frame(
    xmin = c(4,12,4,20,28,20,2,10,18,2,10,18,26),
    xmax = c(4,12,12,20,28,28,6,14,22,6,14,22,30),
    ymin = c(4,4,5,4,4,5,10,10,10,3,3,3,3),
    ymax = c(5,9,5,9,5,5,10,10,10,3,3,3,3)
)



# Create plot
df.vertices %>%
ggplot() +
geom_rect(aes(xmin = column - 2.5, xmax = column + 2.5, ymin = row-1, ymax = row+1, color=color), fill="white", size=2) + 
geom_segment(data=df.edges, aes(x=xmin, xend=xmax, y=ymin, yend=ymax)) + 
scale_colour_manual(values = c("blue" = "#619cff", "red"="#f8766d", "green"="#00ba38")) +

geom_text(aes(x=column, y=row+0.3, label=numerator), size=5) +
geom_text(aes(x=column, y=row-0.3, label=denominator), size=5) +

geom_text(aes(x=8, y=10, label="="), size=6) +
geom_text(aes(x=16, y=10, label="*"), size=6) +
geom_text(aes(x=8, y=3, label="*"), size=6) +
geom_text(aes(x=24, y=3, label="*"), size=6) +

theme_void() + 
theme(legend.position = "none") + 
coord_fixed(ratio = 2)

在此处输入图像描述


推荐阅读