Anonymous
Как заменить квадраты тепловой карты (Highcharts) кружками внутри каждой ячейки в приложении Shiny (Python)
Сообщение
Anonymous » 13 ноя 2025, 18:53
Я разрабатываю приложение Shiny на Python и создал тепловую карту, близкую к тому, что мне нужно.
Однако вместо квадратов я бы хотел, чтобы каждая ячейка представляла собой квадрат с кругом, как в примере ниже.
Вот соответствующая часть моей тепловой карты Highcharts и ее выходные данные:
Код: Выделить всё
options = {
'chart': {
#'type': 'heatmap',
'plotBorderWidth': 1,
'width': 1500,
'height': 800,
},
'title': {'text': postes},
'xAxis': {
'categories': categories_x,
'title': {'text': ''}
},
'yAxis': {
'categories': categories_y,
'title': {'text': ''},
'reversed': True,
'labels': {'useHTML': True}
},
'legend': {'enabled': False},
'series': [
{
'type': 'heatmap',
'name': 'État EVT',
#'borderWidth': 1,
#'borderColor': 'black',
'data': heatmap_data,
'dataLabels': {'enabled': False}
},
{
'type': 'scatter',
'name': 'Alertes',
'data': icons_to_add,
'marker': {
'symbol': 'url(https://cdn-icons-png.flaticon.com/512/80/80795.png)',
'width': 20,
'height': 20
},
'enableMouseTracking': False
}
],
'boost': {'enabled': True},
}
plot_lines = []
for i in range(len(categories_y) - 1):
plot_lines.append({
'color': '#cccccc',
'width': 1,
'value': i + 0.5,
'zIndex': 5
})
options['yAxis']['plotLines'] = plot_lines
options_json = json.dumps(options, ensure_ascii=False)
#### OUTPUT
@output
@render.ui
def hc_container_heatmap():
options_json, dict_lien_ged_json, _, styled_df = donnees_compilees()
return ui.HTML(f"""
if (typeof Highcharts !== 'undefined') {{
const options = {options_json};
const categoryLinks = {dict_lien_ged_json};
options.yAxis.labels.formatter = function() {{
const category = this.value;
const link = categoryLinks[category];
if (link) {{
return '' + category + '';
}} else {{
return category;
}}
}};
Highcharts.chart('hc_container_heatmap', options);
}} else {{
console.error("Highcharts non chargé");
}}
""")
И вот чего я пытаюсь достичь:
Есть ли способ изменить конфигурацию Highcharts (или аналогичную) для достижения вида выше?
Или есть ли лучший подход для визуализации графика с тем же фреймом данных и интеграцией с Shiny для Python?
Подробнее здесь:
https://stackoverflow.com/questions/798 ... ell-in-a-s
1763049209
Anonymous
Я разрабатываю приложение Shiny на Python и создал тепловую карту, близкую к тому, что мне нужно. Однако вместо квадратов я бы хотел, чтобы каждая ячейка представляла собой квадрат с кругом, как в примере ниже. Вот соответствующая часть моей тепловой карты Highcharts и ее выходные данные: [code] options = { 'chart': { #'type': 'heatmap', 'plotBorderWidth': 1, 'width': 1500, 'height': 800, }, 'title': {'text': postes}, 'xAxis': { 'categories': categories_x, 'title': {'text': ''} }, 'yAxis': { 'categories': categories_y, 'title': {'text': ''}, 'reversed': True, 'labels': {'useHTML': True} }, 'legend': {'enabled': False}, 'series': [ { 'type': 'heatmap', 'name': 'État EVT', #'borderWidth': 1, #'borderColor': 'black', 'data': heatmap_data, 'dataLabels': {'enabled': False} }, { 'type': 'scatter', 'name': 'Alertes', 'data': icons_to_add, 'marker': { 'symbol': 'url(https://cdn-icons-png.flaticon.com/512/80/80795.png)', 'width': 20, 'height': 20 }, 'enableMouseTracking': False } ], 'boost': {'enabled': True}, } plot_lines = [] for i in range(len(categories_y) - 1): plot_lines.append({ 'color': '#cccccc', 'width': 1, 'value': i + 0.5, 'zIndex': 5 }) options['yAxis']['plotLines'] = plot_lines options_json = json.dumps(options, ensure_ascii=False) #### OUTPUT @output @render.ui def hc_container_heatmap(): options_json, dict_lien_ged_json, _, styled_df = donnees_compilees() return ui.HTML(f""" if (typeof Highcharts !== 'undefined') {{ const options = {options_json}; const categoryLinks = {dict_lien_ged_json}; options.yAxis.labels.formatter = function() {{ const category = this.value; const link = categoryLinks[category]; if (link) {{ return '' + category + ''; }} else {{ return category; }} }}; Highcharts.chart('hc_container_heatmap', options); }} else {{ console.error("Highcharts non chargé"); }} """) [/code] [img]https://i.sstatic.net/82vaIhhT.png[/img] И вот чего я пытаюсь достичь: [img]https://i.sstatic.net/nSQbLkrP.png[/img] Есть ли способ изменить конфигурацию Highcharts (или аналогичную) для достижения вида выше? Или есть ли лучший подход для визуализации графика с тем же фреймом данных и интеграцией с Shiny для Python? Подробнее здесь: [url]https://stackoverflow.com/questions/79819074/how-to-replace-heatmap-highcharts-squares-with-circles-inside-each-cell-in-a-s[/url]