Source code for pyanno.plots.pyanno_plots
# Copyright (c) 2011, Enthought, Ltd.
# Author: Pietro Berkes <pberkes@enthought.com>
# License: Modified BSD license (2-clause)
from pyanno import measures
from pyanno.plots.matrix_plot import plot_square_matrix
[docs]def plot_pairwise_statistics(stat_func, annotations, nclasses=None, **kwargs):
"""Plot a matrix representation of a statistical function of annotations.
The function `stat_func` is applied to the annotations of all pairs of
annotators, and the resulting matrix is displayed in a window.
Example: :::
>>> plot_pairwise_statistics(pyanno.measures.cohens_kappa, annotations)
See also :func:`pyanno.measures.helpers.pairwise_matrix`,
:func:`~pyanno.plots.matrix_plot.plot_square_matrix`.
Arguments
---------
stat_func : function
Function accepting as first two arguments two 1D array of
annotations, and returning a single scalar measuring some annotations
statistics.
annotations : ndarray, shape = (n_items, n_annotators)
Array of annotations for multiple annotators. Missing values should be
indicated by :attr:`pyanno.util.MISSING_VALUE`
nclasses : int
Number of annotation classes. If None, `nclasses` is inferred from the
values in the annotations
kwargs : dictionary
Additional keyword arguments passed to the plot. The argument 'title'
sets the title of the plot.
"""
if nclasses is None:
measures.helpers.compute_nclasses(annotations)
matrix = measures.pairwise_matrix(stat_func, annotations,
nclasses=nclasses)
kwargs_local = {'colormap_low': -1.0,
'colormap_high': 1.0}
# add user kwargs, allowing for overwrite
kwargs_local.update(kwargs)
matrix_view = plot_square_matrix(matrix, **kwargs_local)
return matrix_view
#### Testing and debugging ####################################################
def main():
""" Entry point for standalone testing/debugging. """
from pyanno.modelBt_loopdesign import ModelBtLoopDesign
model = ModelBtLoopDesign.create_initial_state(4)
annotations = model.generate_annotations(100)
mv = plot_pairwise_statistics(measures.cohens_kappa, annotations)
return mv
if __name__ == '__main__':
mv = main()