Source code for conntextual.ui.channel.plot

"""
A module implementing a plot widget.
"""

# third-party
from numpy.typing import ArrayLike
from textual_plotext import PlotextPlot


[docs] class Plot(PlotextPlot): """A plot widget.""" def __init__( self, x: ArrayLike, y: ArrayLike, theme: str, marker: str, *args, title: str = "under construction", **kwargs, ) -> None: """Initialize this instance.""" super().__init__(*args, **kwargs) self.x = x self.y = y self.title = title self.plot_theme = theme self.plot_marker = marker
[docs] def on_show(self) -> None: """Handle showing the plot.""" self.dispatch()
[docs] def on_resize(self) -> None: """Handle re-size.""" self.dispatch()
[docs] def on_mount(self) -> None: """Initialize the plot.""" self.update_title() self.plt.theme(self.plot_theme)
[docs] def update_title(self, name: str = None) -> None: """Update the plot's title.""" if name is not None: self.title = name self.plt.title(self.title)
[docs] def dispatch(self) -> None: """Draw a new instance of the plot.""" self.plt.clear_data() self.plt.plot(self.x, self.y, marker=self.plot_marker) # type: ignore self.refresh()
[docs] def set_data(self, x: ArrayLike, y: ArrayLike) -> None: """Assign new data.""" self.x = x self.y = y self.dispatch()