From 23fbf3a23d2cebb73e02869c4726f35071f770b2 Mon Sep 17 00:00:00 2001 From: David Brazda Date: Mon, 10 Jun 2024 22:34:21 +0200 Subject: [PATCH] markers pd series support --- lightweight_charts/abstract.py | 34 ++++++++++++++++++++++++++++++++++ setup.py | 2 +- src/example/example.ts | 3 +-- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/lightweight_charts/abstract.py b/lightweight_charts/abstract.py index 304d9a1..2988933 100644 --- a/lightweight_charts/abstract.py +++ b/lightweight_charts/abstract.py @@ -325,6 +325,40 @@ class SeriesCommon(Pane): def _update_markers(self): self.run_script(f'{self.id}.series.setMarkers({json.dumps(list(self.markers.values()))})') + def markers_set(self, markers_series: pd.Series, + position: MARKER_POSITION = 'below', + shape: MARKER_SHAPE = 'arrow_up', + color: str = '#2196F3',text: str = ''): + """ + Creates multiple markers from pd series. + :param markers: A pandas Series with DateTimeIndex and boolean values. + The index should be DateTimeIndex and values should be True/False. + :return: a list of marker ids. + + It refreshes the markers, deleting the current. + """ + if not isinstance(markers_series, pd.Series): + #raise exception + raise TypeError('Markers must be a pd.Series') + series = self._series_datetime_format(markers_series, exclude_lowercase=self.name) + marker_ids = [] + self.markers = {} + for timestamp, value in series.iteritems(): + if value: + marker_id = self.win._id_gen.generate() + self.markers[marker_id] = { + "time": timestamp, + "position": marker_position(position), # Default position + "color": color, # Default color + "shape": marker_shape(shape), # Default shape + "text": text, # Default text + } + marker_ids.append(marker_id) + + self._update_markers() + return marker_ids + + def marker_list(self, markers: list): """ Creates multiple markers.\n diff --git a/setup.py b/setup.py index 11f9865..1309aea 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ with open('README.md', 'r', encoding='utf-8') as f: setup( name='lightweight_charts', - version='2.0.7', + version='2.0.8', packages=find_packages(), python_requires='>=3.8', install_requires=[ diff --git a/src/example/example.ts b/src/example/example.ts index f1a7d0b..5c13974 100644 --- a/src/example/example.ts +++ b/src/example/example.ts @@ -8,8 +8,7 @@ handler.createToolBox(); const data = generateCandleData(); if (handler.series) handler.series.setData(data); - - +//tady testovat markery