向 Flexdashboard 仪表添加刻度线

问题描述 投票:0回答:1

我想在 Flexdashboard 仪表图上添加刻度线,然后突出显示仪表栏将从成功过渡到危险的特定点。到目前为止,这是我的代码:

flexdashboard::gauge(42, min = 0, max= 100, 
                     abbreviateDecimals = 2,
                     sectors = flexdashboard::gaugeSectors(success = c(0,50),
                                                           warning = c(50,75),
                                                           danger = c(75,100),
                                                           colors = c('green','yellow','red')))

这是现在的样子

我希望它看起来像这样

即使它看起来不像第二张图像那么干净,但在绘图上有刻度线,然后通过某种方式突出显示条形图会改变颜色的点,那就太好了。

r flexdashboard
1个回答
0
投票

不确定是否可以使用

guage()
,但另一种选择可能是使用
ggplot()
coord_radial()
添加到仪表板(沿着这些思路)?

library(tibble)
library(ggplot2)

df <- tibble(
  x = c(1:42, 1:50, 51:75, 76:100), 
  y = c(rep(1, 42), rep(0.1, 50), rep(0.1, 25), rep(0.1, 25)),
  col = c(rep("darkgreen", 42), rep("darkgreen", 50), rep("darkorange", 25), rep("darkred", 25))
  )

df |> ggplot(aes(x, y, fill = col, colour = col)) +
  geom_col(width = 0.8) + 
  geom_hline(yintercept = 0.1, colour = "white") +
  annotate("text", label = "42", x = 50, y = -0.5, size = 10, fontface = "bold") +
  scale_x_continuous(limits = c(0, 100)) +
  scale_y_continuous(limits = c(-1, NA)) +
  scale_fill_identity() +
  scale_colour_identity() +
  coord_radial(start = -0.5 * pi, end = 0.5 * pi, expand = FALSE) +
  labs(x = NULL, y = NULL) +
  theme(
    axis.text.y = element_blank(),
    axis.ticks.y = element_blank()
    )

创建于 2024-04-23,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.