Commit 628af44f authored by Niels-Oliver Walkowski's avatar Niels-Oliver Walkowski
Browse files

move vline to sequenceplot superclass

parent 6a55aae7
......@@ -15,7 +15,7 @@ class SequencePlot(object):
def get_xpos(self, view):
"""calculate frame numbers for x-ticks"""
# TODO Die Frame No. Range könnte ich auch besser zu einer Methode von Frames machen
return [nr for nr in range(view._frames.start, view._frames.end,
view._frame_step)] # um X-Achse Minuten anzeigen zu lassen
......@@ -27,13 +27,13 @@ class SequencePlot(object):
# TODO styling und plotten sind hier noch etwas zusammengemischt
def ittenstyle(self, ax, view):
plt.style.use('ggplot')
fig_coef = self.width / self.height
tick_cnt = fig_coef / 0.3605405405
tick_step = int(view._frames.frm_cnt / tick_cnt)
# loc = plticker.MultipleLocator(base=tick_freq) # this locator puts ticks at regular intervals (0.0005)
loc = plticker.FixedLocator(range(0, view._frames.end, tick_step))
fmt = plticker.FuncFormatter(self._timelabels)
......@@ -73,11 +73,30 @@ class SequencePlot(object):
return (ax, axt)
# TODO Überführbar in Superclass?
# evtl. auch eher feature drer View Klasse
# TODO self._x sollte eine array sein
def _vlines(self, view, mark, mark_gt, mark_lt):
npx = np..array(self._x)
if mark_gt:
poss = npx[view > mark_gt]
for pos in poss:
self._ax.axvline(pos, color='#a6e22e', alpha=0.4, linewidth=3)
if mark_lt:
poss = npx[view < mark_lt]
for pos in poss:
self._ax.axvline(pos, color='#f92672', alpha=0.4, linewidth=3)
if mark:
for pos in mark:
print(self._ax)
self._ax.axvline(pos, color='#66d9ef', alpha=0.4, linewidth=3)
def saveplt(self, title=False, fname='plot.png'):
if title:
self._ax.set_title(title, {'fontsize': 14}, y=1.18)
self.fig.set_size_inches(self.width, self.height)
self.fig.set_size_inches(self.width, self.height)
self.fig.tight_layout()
self.fig.savefig(fname, dpi=400)
......@@ -90,7 +109,7 @@ class MultivariatePlot(SequencePlot):
self.fig = plt.figure()
self._ax = plt.axes()
def plot(self, view):
def plot(self, view, mark_gt=False, mark_lt=False, mark=False):
x = view[:, 0]
y = view[:, 1]
value = view[:, 2]
......@@ -100,11 +119,14 @@ class MultivariatePlot(SequencePlot):
# Plotten
axt.scatter(x, y, c=(0, 0, 0), s=thickness, linewidths=0)
# axt.scatter(x, y, c=y, cmap='Greys_r', s=thickness, linewidths=0) # DOC: vmin/vmax sorgt für die Verteilung der Fraben der Colorm
# axt.scatter(x, y, c=y, cmap='Greys_r', s=thickness, linewidths=0) # DOC: vmin/vmax sorgt für die Verteilung der Fraben der Colorm
# ax.scatter(x, y, c=y, cmap='hsv', s=thickness, linewidths=0)
if mark:
self._vlines(view, mark, False, False)
self.fig.tight_layout()
self.fig.set_size_inches(self.width, self.height)
self.fig.set_size_inches(self.width, self.height)
return self.fig, self._ax
......@@ -122,23 +144,10 @@ class UnivariatePlot(SequencePlot):
# Interpolation mit savitzky_golay funktioniert nicht
# contrast_points = savitzky_golay(np.array(contrast_points), 51, 7)
self._axt.plot(self._x, view, label=view.feature)
self._axt.plot(self._x, view, label=view.feature)
# TODO Überführbar in Superclass?
# evtl. auch eher feature drer View Klasse
# TODO self._x sollte eine array sein
npx = np.array(self._x)
if mark_gt:
poss = npx[view > mark_gt]
for pos in poss:
self._ax.axvline(pos, color='#a6e22e', alpha=0.3, linewidth=3)
if mark_lt:
poss = npx[view < mark_lt]
for pos in poss:
self._ax.axvline(pos, color='#f92672', alpha=0.3, linewidth=3)
if mark:
for pos in mark:
self._ax.axvline(pos, color='#66d9ef', alpha=0.3, linewidth=3)
if any([mark, mark_gt, mark_lt]):
self._vlines(view, mark, mark_gt, mark_lt)
self._axt.legend()
......
from itten.movie import Movie
from itten.views import MultivariateSequence
from itten.views import UnivariateSequence
from itten.visuals import MultivariatePlot
from itten.visuals import UnivariatePlot
movie = Movie(prefix='wwz_', folder='../DHd-2017/Data/Frames/WWZ/')
# movie._frames.start = 367
# movie._frames.end = 1000
cont = MultivariateSequence(movie._frames,)
cont.populate(frm_stp=1, ctrst='saturation')
# cont = UnivariateSequence(movie._frames,)
cont.populate(frm_stp=3, ctrst='light_dark')
viz = MultivariatePlot(cont)
viz.plot(cont, mark=[243, 1885, 3430, 4237, 4543])
# cont.seqper(frm_stp=5, ctrst='saturation', perc=50)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment