view numerics/bar.py @ 112:7578313b9fbf

hook up basic plumbing
author Jeff Hammel <k0scist@gmail.com>
date Sun, 15 Mar 2015 16:23:33 -0700
parents 19a5c2fb52bb
children f9900883db2e
line wrap: on
line source

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
bar charts using bokeh

See:
- http://bokeh.pydata.org/tutorial/solutions/gallery/olympics.html
"""

# imports
import argparse
#import pandas as pd
import sys
from .manipulate import ManipulationParser
#from .read import CSVParser
from bokeh.charts import Bar
from bokeh.plotting import *

__all__ = ['bar_chart', 'BarChartParser', 'main']

def bar_chart(data, output, title=None):
    """create a bar chart"""

    bar = Bar(data, tools="pan,wheel_zoom,box_zoom,reset,resize")
    bar.filename(output)
    bar.width(len(data)*50)
    bar.show()


class BarChartParser(ManipulationParser):
    """command line options parser for bar charts"""
    # TODO: upstream to PlotParser

    def __init__(self, **kwargs):
        kwargs.setdefault('description', __doc__)
        ManipulationParser.__init__(self, **kwargs)
        self.add_argument('-t', '--title', dest='title',
                          help="plot title")


def main(args=sys.argv[1:]):
    """CLI"""

    # parse command line
    parser = BarChartParser()
    options = parser.parse_args(args)

    # process data
    data = parser.typed_data()

    # parse file
#    data = pd.read_csv(options.input, header=None, names=options.columns, index_col=0)

    # generate bar chart
#    bar_chart(data, options.output, title=options.title or options.input.name)

if __name__ == '__main__':
    main()