In order to create a bubble chart in Jasper Reports, user must have three measures all using numeric type data (Integer, Long, Double, and BigDecimal class). String and Date/Timestamp type cannot be used as the measure for the chart. The measures should be listed in the chart design in x, y, and z-axis order, where the filed value in each measure will represent x-axis, y-axis for the bubble coordinate in the chart and size for the bubble, respectively.
It is also importance to set chart category to $V{REPORT_COUNT} in order to display individual bubble in the chart. Without the count, only one bubble per chart series will get displayed.
<axisLevelBucket order="None" class="java.lang.Integer"> <bucketExpression><![CDATA[$V{REPORT_COUNT}]]></bucketExpression> </axisLevelBucket>
The following is a sample report JRXML file using HTML5 bubble chart:
<?xml version="1.0" encoding="UTF-8"?> <!-- Created with Jaspersoft Studio version 6.2.1.final using JasperReports Library version 6.2.1 --> <!-- 2016-04-11T16:40:11 --> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="test_bubble" pageWidth="612" pageHeight="792" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="896e8b63-5c37-4773-8d2a-5d255404ac1a"> <property name="com.jaspersoft.studio.data.defaultdataadapter" value="JRSrepo.xml"/> <property name="com.jaspersoft.studio.data.sql.tables" value=""/> <queryString language="SQL"> <![CDATA[select 0.0 as category_val, 28448 as no_of_calls, '65' as pattern_total_calls_pct, 'customer2' as i_zone_name, 'ShortRingAnswer' as category, '4/6/16 9:00 PM' as end_time union select 0.0 as category_val, 28776 as no_of_calls, '66' as pattern_total_calls_pct, 'customer3' as i_zone_name, 'ShortRingAnswer' as category, '4/6/16 9:00 PM' as end_time union select 0.0 as category_val, 29581 as no_of_calls, '67' as pattern_total_calls_pct, 'customer4' as i_zone_name, 'ShortRingAnswer' as category, '4/6/16 9:00 PM' as end_time union select 0.0 as category_val, 32459 as no_of_calls, '74' as pattern_total_calls_pct, 'customer1' as i_zone_name, 'ShortRingAnswer' as category, '4/6/16 9:00 PM' as end_time union select 0.0 as category_val, 28689 as no_of_calls, '66' as pattern_total_calls_pct, 'customer3' as i_zone_name, 'ShortRingAnswer' as category, '4/6/16 8:30 PM' as end_time union select 0.0 as category_val, 28751 as no_of_calls, '66' as pattern_total_calls_pct, 'customer4' as i_zone_name, 'ShortRingAnswer' as category, '4/6/16 8:30 PM' as end_time union select 0.0 as category_val, 28879 as no_of_calls, '66' as pattern_total_calls_pct, 'customer2' as i_zone_name, 'ShortRingAnswer' as category, '4/6/16 8:30 PM' as end_time union select 0.0 as category_val, 32742 as no_of_calls, '75' as pattern_total_calls_pct, 'customer1' as i_zone_name, 'ShortRingAnswer' as category, '4/6/16 8:30 PM' as end_time]]> </queryString> <field name="category_val" class="java.lang.Double"/> <field name="no_of_calls" class="java.lang.Integer"/> <field name="pattern_total_calls_pct" class="java.lang.String"/> <field name="i_zone_name" class="java.lang.String"/> <field name="category" class="java.lang.String"/> <field name="end_time" class="java.lang.String"/> <background> <band splitType="Stretch"/> </background> <title> <band splitType="Stretch"/> </title> <pageHeader> <band splitType="Stretch"/> </pageHeader> <columnHeader> <band splitType="Stretch"/> </columnHeader> <detail> <band splitType="Stretch"/> </detail> <columnFooter> <band splitType="Stretch"/> </columnFooter> <pageFooter> <band splitType="Stretch"/> </pageFooter> <summary> <band height="500" splitType="Stretch"> <property name="local_mesure_unitheight" value="pixel"/> <property name="com.jaspersoft.studio.unit.height" value="px"/> <componentElement> <reportElement x="0" y="0" width="570" height="400" uuid="fd0ecb90-49c1-4820-afbb-57073a49a6fb"> <property name="local_mesure_unitheight" value="pixel"/> <property name="com.jaspersoft.studio.unit.height" value="px"/> </reportElement> <hc:chart xmlns:hc="http://jaspersoft.com/highcharts" xsi:schemaLocation="http://jaspersoft.com/highcharts http://jaspersoft.com/schema/highcharts.xsd" type="Bubble"> <hc:hyperlink hyperlinkType="Reference" hyperlinkTarget="Blank"> <hyperlinkReferenceExpression> <![CDATA["http://www.december.com/html/spec/colorrgbadec.html"]]> </hyperlinkReferenceExpression> </hc:hyperlink> <hc:chartSetting name="default"> <hc:chartProperty name="chart.plotBorderWidth"> <hc:propertyExpression><![CDATA[1]]></hc:propertyExpression> </hc:chartProperty> <hc:chartProperty name="chart.zoomType"> <hc:propertyExpression><![CDATA["xy"]]></hc:propertyExpression> </hc:chartProperty> <hc:chartProperty name="credits.enabled"> <hc:propertyExpression><![CDATA[false]]></hc:propertyExpression> </hc:chartProperty> <hc:chartProperty name="credits.href"> <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression> </hc:chartProperty> <hc:chartProperty name="credits.text"> <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression> </hc:chartProperty> <hc:chartProperty name="subtitle.style.color"> <hc:propertyExpression><![CDATA[new java.awt.Color(-15389789)]]></hc:propertyExpression> </hc:chartProperty> <hc:chartProperty name="subtitle.text"> <hc:propertyExpression><![CDATA[""]]></hc:propertyExpression> </hc:chartProperty> <hc:chartProperty name="title.style.color"> <hc:propertyExpression><![CDATA[new java.awt.Color(-1233126)]]></hc:propertyExpression> </hc:chartProperty> <hc:chartProperty name="title.text"> <hc:propertyExpression><![CDATA["Test Bubble Report"]]></hc:propertyExpression> </hc:chartProperty> <hc:chartProperty name="xAxis.gridLineWidth"> <hc:propertyExpression><![CDATA[1]]></hc:propertyExpression> </hc:chartProperty> <hc:chartProperty name="xAxis.title.text"> <hc:propertyExpression><![CDATA["Category"]]></hc:propertyExpression> </hc:chartProperty> <hc:chartProperty name="yAxis.endOnTick"> <hc:propertyExpression><![CDATA[false]]></hc:propertyExpression> </hc:chartProperty> <hc:chartProperty name="yAxis.startOnTick"> <hc:propertyExpression><![CDATA[false]]></hc:propertyExpression> </hc:chartProperty> <hc:chartProperty name="yAxis.title.text"> <hc:propertyExpression><![CDATA["Number of Calls"]]></hc:propertyExpression> </hc:chartProperty> </hc:chartSetting> <multiAxisData> <multiAxisDataset/> <dataAxis axis="Rows"> <axisLevel name="Level1"> <labelExpression><![CDATA["Level Label expression"]]></labelExpression> <axisLevelBucket order="None" class="java.lang.Integer"> <bucketExpression><![CDATA[$V{REPORT_COUNT}]]></bucketExpression> </axisLevelBucket> </axisLevel> </dataAxis> <dataAxis axis="Columns"> <axisLevel name="series"> <labelExpression><![CDATA[]]></labelExpression> <axisLevelBucket class="java.lang.String"> <bucketExpression><![CDATA[$F{i_zone_name}]]></bucketExpression> </axisLevelBucket> </axisLevel> </dataAxis> <multiAxisMeasure name="Measure1" class="java.lang.Double" calculation="Nothing"> <labelExpression><![CDATA[""]]></labelExpression> <valueExpression><![CDATA[$F{category_val}]]></valueExpression> </multiAxisMeasure> <multiAxisMeasure name="Measure2" class="java.lang.Integer" calculation="Nothing"> <labelExpression><![CDATA["Value"]]></labelExpression> <valueExpression><![CDATA[$F{no_of_calls}]]></valueExpression> </multiAxisMeasure> <multiAxisMeasure name="Measure3" class="java.lang.Integer" calculation="Nothing"> <labelExpression><![CDATA[""]]></labelExpression> <valueExpression><![CDATA[new Integer($F{pattern_total_calls_pct})]]></valueExpression> </multiAxisMeasure> </multiAxisData> <hc:series name="Measure1"/> <hc:series name="Measure2"/> <hc:series name="Measure3"/> </hc:chart> </componentElement> </band> </summary> </jasperReport>
User can test this report with any PostgreSQL data source. Here is the report output:
=================++++++++++++++++++++++++++++++++++++++++++++++++++===============
TTC-20160425-67878
Recommended Comments
There are no comments to display.