Drop 'ohlc' array usage from UI components

plotitem_overlays
Tyler Goodlet 2022-01-09 11:31:15 -05:00
parent 65c3cc5f5f
commit 6f07c5e255
3 changed files with 24 additions and 10 deletions

View File

@ -18,6 +18,7 @@
Chart axes graphics and behavior. Chart axes graphics and behavior.
""" """
import functools
from typing import List, Tuple, Optional from typing import List, Tuple, Optional
from math import floor from math import floor
@ -33,17 +34,18 @@ _axis_pen = pg.mkPen(hcolor('bracket'))
class Axis(pg.AxisItem): class Axis(pg.AxisItem):
"""A better axis that sizes tick contents considering font size. '''
A better axis that sizes tick contents considering font size.
""" '''
def __init__( def __init__(
self, self,
linkedsplits, linkedsplits,
typical_max_str: str = '100 000.000', typical_max_str: str = '100 000.000',
min_tick: int = 2, min_tick: int = 2,
**kwargs **kwargs
) -> None:
) -> None:
super().__init__(**kwargs) super().__init__(**kwargs)
# XXX: pretty sure this makes things slower # XXX: pretty sure this makes things slower
@ -95,7 +97,12 @@ class PriceAxis(Axis):
# XXX: drop for now since it just eats up h space # XXX: drop for now since it just eats up h space
def tickStrings(self, vals, scale, spacing): def tickStrings(
self,
vals,
scale,
spacing,
):
# TODO: figure out how to enforce min tick spacing by passing # TODO: figure out how to enforce min tick spacing by passing
# it into the parent type # it into the parent type
@ -131,9 +138,8 @@ class DynamicDateAxis(Axis):
indexes: List[int], indexes: List[int],
) -> List[str]: ) -> List[str]:
# try:
chart = self.linkedsplits.chart chart = self.linkedsplits.chart
bars = chart._arrays['ohlc'] bars = chart._arrays[chart.name]
shm = self.linkedsplits.chart._shm shm = self.linkedsplits.chart._shm
first = shm._first.value first = shm._first.value
@ -156,7 +162,14 @@ class DynamicDateAxis(Axis):
delay = times[-1] - times[-2] delay = times[-1] - times[-2]
return dts.strftime(self.tick_tpl[delay]) return dts.strftime(self.tick_tpl[delay])
def tickStrings(self, values: List[float], scale, spacing): def tickStrings(
self,
values: tuple[float],
scale,
spacing,
):
# info = self.tickStrings.cache_info()
# print(info)
return self._indexes_to_timestrs(values) return self._indexes_to_timestrs(values)

View File

@ -276,7 +276,7 @@ class ContentsLabels:
) -> ContentsLabel: ) -> ContentsLabel:
label = ContentsLabel( label = ContentsLabel(
view=chart._vb, view=chart.view,
anchor_at=anchor_at, anchor_at=anchor_at,
) )
self._labels.append( self._labels.append(
@ -438,7 +438,7 @@ class Cursor(pg.GraphicsObject):
# the current sample under the mouse # the current sample under the mouse
cursor = LineDot( cursor = LineDot(
curve, curve,
index=plot._arrays['ohlc'][-1]['index'], index=plot._arrays[plot.name][-1]['index'],
plot=plot plot=plot
) )
plot.addItem(cursor) plot.addItem(cursor)

View File

@ -342,7 +342,8 @@ class SelectRect(QtGui.QGraphicsRectItem):
ixmn, ixmx = round(xmn), round(xmx) ixmn, ixmx = round(xmn), round(xmx)
nbars = ixmx - ixmn + 1 nbars = ixmx - ixmn + 1
data = self._chart._arrays['ohlc'][ixmn:ixmx] chart = self._chart
data = chart._arrays[chart.name][ixmn:ixmx]
if len(data): if len(data):
std = data['close'].std() std = data['close'].std()