У меня есть блестящее приложение, представляющее собой набор диаграмм. На диаграмме 4 показано среднее время, которое я ранее получал здесь с помощью по настройке всплывающих подсказок и меток оси Y для отображения в формате мм:сс по желанию. Однако в более широком контексте приложения обнаружилась некоторая ошибка. Всякий раз, когда размер окна приложения или графика медианного времени (диаграмма 4) изменяется, остальные метки оси Y подвергаются тем же условиям ретрансляции и на графике также пытаются поместить эти метки в формат m:ss. Метки на диаграмме 1 отображаются как мм:сс, хотя это не должно быть, а метки на двух других графиках отображаются как NaN:NaN.
Моя интуиция подсказывает, что исправлением будет измените onRender, чтобы он применялся только к этой конкретной диаграмме по мере необходимости, или, что менее идеально, создайте аналогичные для каждой диаграммы, которые применяются к правильным единицам измерения для этой оси. Проблема в том, что мои навыки работы с HTML ограничены, и мне не удалось отладить onRender, чтобы найти решение.
Ниже показано мое приложение:
library(shiny)
library(tidyverse)
library(plotly)
#---------------------------------------------------------Data
df1 %
layout(
yaxis = list(range = list(0, 1), tickformat = ".0%"),
xaxis = list(title=' ', showticklabels=FALSE),
bargap=0,
legend = list(orientation = 'h',
x = .5, xanchor = "center",
y = -.2, yanchor = "top",
font = list(size = 11))
)
})
output$chart4 %
plot_ly(x = ~group, y = ~median, type = 'bar', name = ~group,
customdata = nfm(df4$median),
hovertemplate = "%{x} %{customdata}",
error_y = list( symmetric= FALSE, arrayminus = ~q1,
array = ~(q3 - median), color = '#000000')
) %>%
layout(yaxis = list(title = 'Median Time'),
xaxis = list(title = '', categoryorder='trace')) %>%
htmlwidgets::onRender(
'function(el, x) {
trfm = function(d){
var mn = Math.floor(d/60);
var sc = (d % 60);
return (sc == 60 ? (mn+1) + ":00" : mn + ":" + (sc < 10 ? "0" : "") + sc)
}
frmtMe = function() {
var here = document.querySelectorAll("g.ytick")
here.forEach(function(it, ind) {
if(!/:/.test(here[ind].firstChild.textContent)) {
here[ind].firstChild.textContent = trfm(here[ind].firstChild.textContent)
}
});
}
frmtMe();
el.on("plotly_relayout", frmtMe);
}')
})
}
shinyApp(ui = ui, server = server)
Подробнее здесь: https://stackoverflow.com/questions/793 ... tsonrender
Ошибка графического ретрансляции из-за пользовательских меток осей из htmlwidgets::onRender() ⇐ Html
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Класс осей - явно устанавливает размер (ширину/высоту) осей в заданных единицах.
Anonymous » » в форуме Python - 0 Ответы
- 54 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Spring Cloud Gateway возвращает ошибку HTML вместо ошибки ретрансляции службы
Anonymous » » в форуме JAVA - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-