Source code for immuneML.reports.PlotlyUtil

import plotly.graph_objects as go


[docs]class PlotlyUtil:
[docs] @staticmethod def add_single_axis_labels(figure, x_label, y_label, x_label_position, y_label_position): """ Takes a multi-facet plotly figure and replaces the repetitive x and y axis labels with single axis labels in the form of annotations. Args: figure: a plotly figure x_label: the x label text y_label: the y label text x_label_position: the position of the new axis labels relative to the respective axes y_label_position: the position of the new axis labels relative to the respective axes Returns: an updated plotly figure """ # hide subplot y-axis titles and x-axis titles for axis in figure.layout: if type(figure.layout[axis]) == go.layout.YAxis: figure.layout[axis].title.text = '' if type(figure.layout[axis]) == go.layout.XAxis: figure.layout[axis].title.text = '' # keep all other annotations and add single y-axis and x-axis title: figure.update_layout( # keep the original annotations and add a list of new annotations: annotations=list(figure.layout.annotations) + [go.layout.Annotation(x=y_label_position, y=0.5, font={"size": 14}, showarrow=False, text=y_label, textangle=-90, xref="paper", yref="paper")] + [go.layout.Annotation(x=0.5, y=x_label_position, font={"size": 15}, showarrow=False, text=x_label, textangle=-0, xref="paper", yref="paper")]) return figure