view numerics/bar.py @ 107:19a5c2fb52bb

add transpose functionality
author Jeff Hammel <k0scist@gmail.com>
date Sun, 15 Mar 2015 10:02:48 -0700
parents 889728b8d359
children 7578313b9fbf
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 csv
import os
#import pandas as pd
import sys
from .read import CSVParser
from bokeh.charts import Bar
from bokeh.plotting import *
from collections import OrderedDict

__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(CSVParser):
    """command line options parser for bar charts"""
    # TODO: upstream to PlotParser

    def __init__(self, **kwargs):
        kwargs.setdefault('formatter_class', argparse.RawTextHelpFormatter)
        kwargs.setdefault('description', __doc__)
        CSVParser.__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)

    # 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()