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