As you can immagine, this charts are 100% QPainter. The source code is available on blog-code@github.
Pie Chart
table = DataTable() table.addColumn('Lang') table.addColumn('Rating') table.addRow(['Java', 17.874]) table.addRow(['C', 17.322]) table.addRow(['C++', 8.084]) table.addRow(['C#', 7.319]) table.addRow(['PHP', 6.096]) chart = PieChart(table) chart.save('pie.png', QSize(240, 240), legend_width=100)
The usage is really simple, you have to create your table with columns and data, create a chart object using the table that you've created and you can call the draw() or save() method to show/save the chart somewhere.
Scattered Chart
chart = ScatterChart(table) chart.haxis_title = 'Proc input' chart.haxis_vmin = 0 chart.haxis_vmax = 16 chart.haxis_step = 2 chart.vaxis_title = 'Quality' chart.vaxis_vmin = 90 chart.vaxis_vmax = 104 chart.vaxis_step = 1
You can customize the min/max value and the step of horizontal and vertical axis, ore you can use the default calculated on your data. You can also set the Reference column with setHorizontalAxisColumn() or setVerticalAxisColumn().
Area Chart
table = DataTable() table.addColumn('Time') table.addColumn('Site 1') table.addColumn('Site 2') table.addRow([ 4.00, 120, 500]) table.addRow([ 6.00, 270, 460]) table.addRow([ 8.30, 1260, 1120]) table.addRow([10.15, 2030, 540]) table.addRow([12.00, 520, 890]) table.addRow([18.20, 1862, 1500]) chart = AreaChart(table) chart.setHorizontalAxisColumn(0) chart.haxis_title = 'Time' chart.haxis_vmin = 0.0 chart.haxis_vmax = 20.0 chart.haxis_step = 5 chart.save('area.png', QSize(400, 240), legend_width=100)
Line Chart
chart = LineChart(table) chart.setHorizontalAxisColumn(0) chart.haxis_title = 'Time' chart.haxis_vmin = 0.0 chart.haxis_vmax = 20.0 chart.haxis_step = 2
Once again, the code is available on github at blog-code/qt4-charts/chart.py.
Thanks you code is great, soon I write because I like to improvement with barcode, it is posible send patch to your git repository?
ReplyDelete