From 18e651e286bb8e65b49c21eb3e1b29cc42e975b1 Mon Sep 17 00:00:00 2001 From: Carifio24 Date: Thu, 1 Aug 2024 09:54:01 -0400 Subject: [PATCH] Add dendrogram viewer to Chart Studio exporter. --- glue_plotly/web/export_plotly.py | 16 +++++++++++++++- glue_plotly/web/qt/__init__.py | 8 ++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/glue_plotly/web/export_plotly.py b/glue_plotly/web/export_plotly.py index 591cd13..ed303cf 100644 --- a/glue_plotly/web/export_plotly.py +++ b/glue_plotly/web/export_plotly.py @@ -7,7 +7,7 @@ from glue.core.layout import Rectangle, snap_to_grid -from glue_plotly.common import histogram, profile, scatter2d, \ +from glue_plotly.common import dendrogram, histogram, profile, scatter2d, \ data_count, layers_to_export, base_rectilinear_axis SYM = {'o': 'circle', 's': 'square', '+': 'cross', '^': 'triangle-up', @@ -141,6 +141,20 @@ def export_profile(viewer): return traces, xaxis, yaxis +def export_dendrogram(viewer): + traces = [] + layers = layers_to_export(viewer) + add_data_label = data_count(layers) > 1 + for layer in layers: + data = layer.mpl_artists[0].get_xydata() + trace = dendrogram.trace_for_layer(layer.state, data, add_data_label=add_data_label) + traces.append(trace) + + config = dendrogram.layout_config_from_mpl(viewer) + + return traces, config["xaxis"], config["yaxis"] + + def build_plotly_call(app): args = [] layout = {'showlegend': True, 'barmode': 'overlay', 'bargap': 0, diff --git a/glue_plotly/web/qt/__init__.py b/glue_plotly/web/qt/__init__.py index 5d59993..f152ee4 100644 --- a/glue_plotly/web/qt/__init__.py +++ b/glue_plotly/web/qt/__init__.py @@ -1,3 +1,6 @@ +from glue_plotly.web.export_plotly import export_dendrogram + + def setup(): from glue.config import exporters @@ -6,6 +9,11 @@ def setup(): export_profile) from glue_plotly.web.qt.exporter import save_plotly + try: + from glue_qt.plugins.dendro_viewer import DendrogramViewer + DISPATCH[DendrogramViewer] = export_dendrogram + except ImportError: + pass from glue_qt.viewers.scatter import ScatterViewer from glue_qt.viewers.histogram import HistogramViewer from glue_qt.viewers.profile import ProfileViewer