|
|
|
@ -24,10 +24,11 @@ plots from multi-indexed Panda datasets. |
|
|
|
|
from .util import xdistr, get_stars |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def scatterplot_subtrack(ax, data, n_track, n_subtrack, max_subtrack, |
|
|
|
|
color, width=.7, min_sep=-.05): |
|
|
|
|
def scatterplot_subtrack( |
|
|
|
|
ax, data, n_track, n_subtrack, max_subtrack, color, width=0.7, min_sep=-0.05 |
|
|
|
|
): |
|
|
|
|
"""Plot a single subtrack. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:param ax: The matplotlib axis to draw on |
|
|
|
|
:param data: The data series from which the values to plot are taken |
|
|
|
|
:param n_track: Offset of the current track |
|
|
|
@ -41,18 +42,27 @@ def scatterplot_subtrack(ax, data, n_track, n_subtrack, max_subtrack, |
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
offset = n_track * max_subtrack + n_subtrack |
|
|
|
|
xs = xdistr(data.values, width, center=True, min_sep=min_sep, |
|
|
|
|
offset=offset) |
|
|
|
|
xs = xdistr(data.values, width, center=True, min_sep=min_sep, offset=offset) |
|
|
|
|
ax.plot(xs, data.values, color=color, marker='.', linestyle='') |
|
|
|
|
ax.hlines(data.mean(), offset - .5, offset + .5, color) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def scatterplot(ax, data, columns, subtrackcolumns=False, |
|
|
|
|
tracks=[None], trackname=0, |
|
|
|
|
subtracks=[None], subtrackname=1, |
|
|
|
|
colors='rgb', width=.7, min_sep=-.05, testfunc=None): |
|
|
|
|
ax.hlines(data.mean(), offset - 0.5, offset + 0.5, color) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def scatterplot( |
|
|
|
|
ax, |
|
|
|
|
data, |
|
|
|
|
columns, |
|
|
|
|
subtrackcolumns=False, |
|
|
|
|
tracks=[None], |
|
|
|
|
trackname=0, |
|
|
|
|
subtracks=[None], |
|
|
|
|
subtrackname=1, |
|
|
|
|
colors='rgb', |
|
|
|
|
width=0.7, |
|
|
|
|
min_sep=-0.05, |
|
|
|
|
testfunc=None, |
|
|
|
|
): |
|
|
|
|
"""Create a scatterplot from multi-indexed data. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
:param ax: The matplotlib axis to draw on |
|
|
|
|
:param data: The data frame from which the values to plot are taken |
|
|
|
|
:param columns: The name of the column(s) in the data frame |
|
|
|
@ -105,8 +115,7 @@ def scatterplot(ax, data, columns, subtrackcolumns=False, |
|
|
|
|
for subtrack in subtracks: |
|
|
|
|
subset = _get_dataseries(data, column, subtrack, subtrackname) |
|
|
|
|
testset.append(subset) |
|
|
|
|
scatterplot_subtrack(ax, subset, i, j, n, colors[j % n], width, |
|
|
|
|
min_sep) |
|
|
|
|
scatterplot_subtrack(ax, subset, i, j, n, colors[j % n], width, min_sep) |
|
|
|
|
j += 1 |
|
|
|
|
|
|
|
|
|
if testfunc and len(subtracks) == 2: |
|
|
|
@ -124,8 +133,9 @@ def scatterplot(ax, data, columns, subtrackcolumns=False, |
|
|
|
|
for column in columns: |
|
|
|
|
subset = _get_dataseries(data, column, track, trackname) |
|
|
|
|
testset.append(subset) |
|
|
|
|
scatterplot_subtrack(ax, subset, i, j, n, colors[j % n], |
|
|
|
|
width, min_sep) |
|
|
|
|
scatterplot_subtrack( |
|
|
|
|
ax, subset, i, j, n, colors[j % n], width, min_sep |
|
|
|
|
) |
|
|
|
|
j += 1 |
|
|
|
|
else: |
|
|
|
|
for subtrack in subtracks: |
|
|
|
@ -135,11 +145,11 @@ def scatterplot(ax, data, columns, subtrackcolumns=False, |
|
|
|
|
else: |
|
|
|
|
level = [trackname] |
|
|
|
|
|
|
|
|
|
subset = _get_dataseries(data, columns, indexer, |
|
|
|
|
level=level) |
|
|
|
|
subset = _get_dataseries(data, columns, indexer, level=level) |
|
|
|
|
testset.append(subset) |
|
|
|
|
scatterplot_subtrack(ax, subset, i, j, n, colors[j % n], |
|
|
|
|
width, min_sep) |
|
|
|
|
scatterplot_subtrack( |
|
|
|
|
ax, subset, i, j, n, colors[j % n], width, min_sep |
|
|
|
|
) |
|
|
|
|
j += 1 |
|
|
|
|
|
|
|
|
|
if testfunc and len(testset) == 2: |
|
|
|
@ -147,7 +157,7 @@ def scatterplot(ax, data, columns, subtrackcolumns=False, |
|
|
|
|
|
|
|
|
|
i += 1 |
|
|
|
|
|
|
|
|
|
ax.set_xticks([(.5 * (n - 2)) + n * i for i in range(len(labels))]) |
|
|
|
|
ax.set_xticks([(0.5 * (n - 2)) + n * i for i in range(len(labels))]) |
|
|
|
|
ax.set_xticklabels(labels) |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -164,6 +174,5 @@ def _do_test(ax, testset, testfunc, n_track, max_subtrack): |
|
|
|
|
if pvalue: |
|
|
|
|
y = max(testset[0].max(), testset[1].max()) * 1.1 |
|
|
|
|
offset = n_track * max_subtrack |
|
|
|
|
ax.hlines(y, offset - .5, offset + 1.5) |
|
|
|
|
ax.text(offset + .5, y, get_stars(pvalue), ha='center', va='bottom') |
|
|
|
|
|
|
|
|
|
ax.hlines(y, offset - 0.5, offset + 1.5) |
|
|
|
|
ax.text(offset + 0.5, y, get_stars(pvalue), ha='center', va='bottom') |
|
|
|
|