1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- """
- Python-nvd3 is a Python wrapper for NVD3 graph library.
- NVD3 is an attempt to build re-usable charts and chart components
- for d3.js without taking away the power that d3.js gives you.
- Project location : https://github.com/areski/python-nvd3
- """
- from .NVD3Chart import NVD3Chart, TemplateMixin
- class multiChart(TemplateMixin, NVD3Chart):
- """
- A multiChart is a type of chart which combines several plots of the same or different types.
- Python example::
- from nvd3 import multiChart
- chart_name = "multiChart"
- chart = multiChart(name=chart_name, x_is_date=False, x_axis_format="AM_PM")
- xdata = [1,2,3,4,5,6]
- ydata = [115.5,160.5,108,145.5,84,70.5]
- ydata2 = [48624,42944,43439,24194,38440,31651]
- kwargs1 = {'color': 'black'}
- kwargs2 = {'color': 'red'}
- extra_serie = {"tooltip": {"y_start": "There is ", "y_end": " calls"}}
- chart.add_serie(y=ydata, x=xdata, type='line', yaxis=1, name='visits', extra=extra_serie, **kwargs1)
- extra_serie = {"tooltip": {"y_start": "", "y_end": " min"}}
- chart.add_serie(y=ydata2, x=xdata, type='bar', yaxis=2,name='spend', extra=extra_serie, **kwargs2)
- chart.buildhtml()
- print(chart.content)
- Javascript rendered to:
- .. include:: ./examples/multiChart.html
- See the source code of this page, to see the underlying javascript.
- """
- CHART_FILENAME = "./multichart.html"
- template_chart_nvd3 = NVD3Chart.template_environment.get_template(CHART_FILENAME)
- def __init__(self, **kwargs):
- super(multiChart, self).__init__(**kwargs)
- self.model = 'multiChart'
- height = kwargs.get('height', 450)
- width = kwargs.get('width', None)
- if kwargs.get('x_is_date', False):
- self.set_date_flag(True)
- self.create_x_axis('xAxis',
- format=kwargs.get('x_axis_format', '%d %b %Y'),
- date=True)
- self.set_custom_tooltip_flag(True)
- else:
- if kwargs.get('x_axis_format') == 'AM_PM':
- self.x_axis_format = format = 'AM_PM'
- else:
- format = kwargs.get('x_axis_format', 'r')
- self.create_x_axis('xAxis', format=format,
- custom_format=kwargs.get('x_custom_format',
- False))
- self.create_y_axis(
- 'yAxis1',
- format=kwargs.get('y1_axis_format', '.02f'),
- custom_format=kwargs.get('y1_custom_format', False))
- self.create_y_axis(
- 'yAxis2',
- format=kwargs.get('y2_axis_format', '.02f'),
- custom_format=kwargs.get('y2_custom_format', False))
- # must have a specified height, otherwise it superimposes both chars
- self.set_graph_height(height)
- if width:
- self.set_graph_width(width)
|