Skip to main content

Data Visualization and Report Building

Project description

CircleCI PyPI ReadTheDocs Coverage Status

PyBloqs is a flexible framework for visualizing data and automated creation of reports.

pybloqs in use in ipython notebook

pybloqs in use in ipython notebook

It works with Pandas, matplotlib and highcharts. PyBloqs creates atomic blocks containing text, tables (from Pandas DataFrame), plots (matplotlib or highcharts) or images. All blocks can be styled with CSS. Each block can be created and displayed separately for fast development turnover. Lists of blocks can be stacked together to form reports. Reports can be displayed as HTML in the browser or exported in a variety of formats (including HTML, PDF, SVG, PNG).

Quickstart

Install PyBloqs

For a minimal install without HighCharts support run:

pip install pybloqs

or when installing in development mode:

python setup.py develop

This will allow you to run the example code below.

External dependencies

For full functionality, PyBloqs requires the following 3rd party programs and libraries. For some, the file location must be specified at install time:

pip install --install-option="INSTALL OPTIONS" git+https://github.com/manahl/pybloqs.git

e.g.

pip install --install-option="--highcharts=~/node_modules/highcharts/,~/node_modules/highcharts-heatmap/" git+https://github.com/manahl/pybloqs.git

wkhtmltopdf is not bundled with PyBloqs. You need to install it from your distribution’s repository (Linux) or download it from the project page (https://wkhtmltopdf.org) . The binaries wkhtmltopdf and wkhtmltoimage are used for file output other than HTML. PyBloqs will search for the binaries on the system path. If you would like to use a local copy of the binaries, install with following option:

--wkhtmltopdf=/path/to/binary

When installing in development mode you can load highcharts explicitly:

python setup.py load_wkhtmltopdf --wkhtmltopdf=/path/to/binary

Highcharts is not bundled with PyBloqs. To create blocks with Highcharts plots, you need to download Highcharts separately (e.g. with npm install highcharts, npm install highcharts-heatmap etc.), and provide the path to your highcharts installation. Please make sure you have the right license for Highcharts. For full functionality you will need the following highcharts packages: highcharts, highcharts-heatmap, highcharts-funnel, highcharts-exporting, highcharts-export-csv (this example assumes, npm installed files into directory ~/node_modules).

--highcharts=~/node_modules/highcharts/,
~/node_modules/highcharts-heatmap/,~/node_modules/highcharts-funnel,~/node_modules/highcharts-exporting,
~/node_modules/highcharts-export-csv

When installing in development mode you can load highcharts explicitly (this example assumes, npm installed files into directory ~/node_modules)

python setup.py load_highcharts --highcharts=~/node_modules/highcharts/,~/node_modules/highcharts-heatmap/,\
~/node_modules/highcharts-funnel,~/node_modules/highcharts-exporting,~/node_modules/highcharts-export-csv

Using PyBloqs

from pybloqs import Block, HStack, VStack
import pandas as pd
from matplotlib import pyplot as plt

text_block = Block('This is a text block', styles={'text-align':'center', 'color':'blue'})
text_block.show()

df = pd.DataFrame([[1., 2.],[3.,4.]], columns =['a', 'b'])
table_block = Block(df)
table_block.show()

plot_block = Block(plt.plot(df['a'], df['b']))
plot_block.show()

plot_and_table = HStack([plot_block, table_block])
report = VStack([text_block, plot_and_table])
report.show()
report.save('report.pdf')

Configuration

You can specify per-user default parameters in a yaml-formatted file ~/.pybloqs.cfg:

user_email_address: some@email.com  # Default: user name
public_dir: /some/dir               # Default: /tmp
tmp_html_dir: /some/dir             # Default: /tmp
smtp_server: url.for.email.server   # Default: ''

Documentation

Have a look at the detailed documentation.

Requirements

PyBloqs works with:

  • matplotlib

  • Pandas

  • html5lib

  • lxml

  • jinja2

  • markdown

  • beautifulsoup4

  • docutils

Acknowledgements

PyBloqs has been under active development at Man AHL since 2013.

Original concept and implementation: Tom Farnbauer

Contributors from AHL Tech team:

Contributions welcome!

License

PyBloqs is licensed under the GNU LGPL v2.1. A copy of which is included in LICENSE

Changelog

1.0.0 (2017-04-07)

  • Initial public release

1.0.1 (2017-04-13)

  • Integration with pypi and ReadTheDocs.

  • Installation on Mac and Windows.

1.0.2 (2017-04-26)

  • Metadata and badge for Python version.

  • Python 3 compatibility changes, part 1.

  • Installation with Coveralls.

1.0.3 (2017-04-26)

  • Bugfix: Import of urlparse corrected, fixes Block.show() .

1.1.0 (2017-05-10)

  • jQuery DataTables support.

  • HTML anchors.

  • Bugfix: Width of HTML-body no longer hard-coded.

1.1.1 (2017-05-10)

  • Bugfix: Static data including DataTables CSS.

1.1.2 (2017-06-2)

  • Bugfix: Image size for Matplotlib figure no longer truncated to whole number.

  • Updated download path for wkhtmltopdf in CI setup.

1.1.3 (2017-06-6)

  • Bugfix: Expansion of user home directory for show().

  • Bugfix: Flexible definition of default type handling for Block() that allows updating.

1.1.4 (2017-06-22)

  • Bugfix: When applying operator on rows or columns (e.g. in totals row), replace nan with zero.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybloqs-1.1.4.tar.gz (123.8 kB view details)

Uploaded Source

Built Distributions

pybloqs-1.1.4-py2.7.egg (117.8 kB view details)

Uploaded Source

pybloqs-1.1.4-py2-none-any.whl (122.7 kB view details)

Uploaded Python 2

File details

Details for the file pybloqs-1.1.4.tar.gz.

File metadata

  • Download URL: pybloqs-1.1.4.tar.gz
  • Upload date:
  • Size: 123.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pybloqs-1.1.4.tar.gz
Algorithm Hash digest
SHA256 e1213a1678f4318e8a5a23ffa1bebdb6bb7981587cf9420bcb3b304a1c864030
MD5 b41f2008ac9c4effbce1d77524517510
BLAKE2b-256 6820a2f69ea040b758f73eeaab0555c5ad65be448d74a70c3a279306f9412fef

See more details on using hashes here.

File details

Details for the file pybloqs-1.1.4-py2.7.egg.

File metadata

  • Download URL: pybloqs-1.1.4-py2.7.egg
  • Upload date:
  • Size: 117.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pybloqs-1.1.4-py2.7.egg
Algorithm Hash digest
SHA256 35d3254bced328e820d9b6505378de3d63f291a005ce1c57073bf301b77b52c4
MD5 033694224277ac90089b371b48ea8050
BLAKE2b-256 76a25d98defe31505590e966bb939b832542efe588ab4c5f3181f6b3e6b8a307

See more details on using hashes here.

File details

Details for the file pybloqs-1.1.4-py2-none-any.whl.

File metadata

File hashes

Hashes for pybloqs-1.1.4-py2-none-any.whl
Algorithm Hash digest
SHA256 167f0102ad3b1828027c1065e882dfc9d216040cee8631ccf958e864bbafb7b3
MD5 7f94830a9ad4d99960cac46988e823b9
BLAKE2b-256 c0bcaf09f7df17a7039aadffd6b12e5c39085f69c134059f09383352fe9463a2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page