Я хотел бы добавить отметки на графике шкалы 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')))
Вот как это выглядит сейчас
И мне бы хотелось, чтобы это выглядело примерно так
Даже если оно выглядит не так чисто, как второе изображение, было бы неплохо поставить на графике отметки, а затем каким-то образом выделить точку, в которой полоса будет менять цвет.





Не уверен, возможно ли это с помощью 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), n.breaks = 10) +
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()
)

Created on 2024-04-23 with reprex v2.1.0
Воссоздал аналогичную диаграмму в Highcharter, так как не думаю, что это возможно с flexdashboard::gauge(). Вы можете поиграть с innerRadius и outerRadius полос графика, чтобы расположить их ниже основной заливки шкалы.
Код, используемый для создания графика:
library(highcharter)
library(dplyr)
df <- data.frame(Value = 42)
hchart(
df,
hcaes(y = Value),
name = "Value",
type = "solidgauge",
radius = 93,
dataLabels = list(
borderWidth = 0,
padding = 0,
y = -20,
style = list(
fontWeight = "bold",
fontSize = "60px")
)
) |>
hc_pane(
startAngle = -120,
endAngle = 120,
background = list(
backgroundColor = "lightgrey",
borderWidth = 0,
outerRadius = '100%',
innerRadius = '60%',
shape = "arc"
)
) |>
hc_yAxis(
title = list(
text = ""
),
min = 0,
max = 100,
minorTicks = FALSE,
tickWidth = 0,
lineWidth = 0,
offset = -15,
labels = list(
style = list(
fontSize = "1.2em",
color = "lightgrey"),
distance = 35
),
plotBands = list(
list(
from = 0,
to = 50,
color = "green"
),
list(
from = 50,
to = 75,
color = "yellow"
),
list(
from = 75,
to = 100,
color = "red"
)
)
) |>
hc_chart(style = list(fontFamily = "Source Sans Pro")) |>
hc_colors(colors = case_when(
df$Value < 51 ~ "green",
df$Value < 76 ~ "yellow",
.default = "red"
))