sazzadul Posted August 24, 2006 Share Posted August 24, 2006 Hi,How can I control colour on my chart, I am using bbar3DPlot and I would like to have different colour on each bar. If I use pie3DPlot then it renders with different colour and I am trying to have the same thing with bar3DPlot. I am attaching my .jrxml file. Any help would be greatyly appreciated. Thanks in advance. <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"> <jasperReport name="YaChartReport" language="java" columnCount="2" pageWidth="595" pageHeight="842" columnWidth="270" columnSpacing="15" leftMargin="20" rightMargin="20" topMargin="30" bottomMargin="30"> <style name="Arial_Normal" isDefault="true" fontName="Arial" fontSize="8" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica" pdfEncoding="Cp1252" isPdfEmbedded="false"/> <style name="Arial_Bold" isDefault="false" fontName="Arial" fontSize="8" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Bold" pdfEncoding="Cp1252" isPdfEmbedded="false"/> <style name="Arial_Italic" isDefault="false" fontName="Arial" fontSize="8" isBold="false" isItalic="true" isUnderline="false" isStrikeThrough="false" pdfFontName="Helvetica-Oblique" pdfEncoding="Cp1252" isPdfEmbedded="false"/> <style name="Comic_Normal" isDefault="false" fontName="Comic Sans MS" fontSize="10" isBold="false" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="COMIC.TTF" pdfEncoding="Identity-H" isPdfEmbedded="true"/> <style name="Comic_Bold" isDefault="false" fontName="Comic Sans MS" fontSize="10" isBold="true" isItalic="false" isUnderline="false" isStrikeThrough="false" pdfFontName="COMICBD.TTF" pdfEncoding="Identity-H" isPdfEmbedded="true"/> <parameter name="ReportTitle" class="java.lang.String"> </parameter> <queryString><![CDATA[sELECT ProductTypeDisplayName, count(ProductTypeDisplayName) as numberofproduct FROM yabank.Application a, yabank.ApplicantApplication aa, yabank.Applicant p, yabank.ProductType, yabank.Name WHERE a.ApplicationId = aa.Application_ApplicationId AND p.ApplicantId = aa.Applicant_ApplicantId AND ProductTypeId = a.ProductType_ProductTypeId AND Name_NameId = NameId group by ProductTypeDisplayName]]></queryString> <field name="ProductTypeDisplayName" class="java.lang.String"> </field> <field name="numberofproduct" class="java.lang.Integer"> </field> <variable name="ProductTypeDisplayNameSumGroup" class="java.lang.Integer" resetType="None"> <variableExpression><![CDATA[$F{numberofproduct}]]></variableExpression> </variable> <group name="ProductTypeGroup" isStartNewColumn="true" isReprintHeaderOnEachPage="false" minHeightToStartNewPage="200"> <groupHeader> <band height="310"> <rectangle> <reportElement x="0" y="14" width="520" height="25" forecolor="#ffdddd" backcolor="#ffdddd"/> <graphicElement/> </rectangle> <staticText> <reportElement style="Arial_Italic" mode="Opaque" x="0" y="14" width="520" height="11" forecolor="#ff0000" backcolor="#ffdddd"/> <text><![CDATA[Alle produkt søknader hittil nå :]]></text> </staticText> <bar3DChart> <chart evaluationTime="Group" evaluationGroup="ProductTypeGroup"> <reportElement positionType="Float" x="0" y="25" width="520" height="275"/> </chart> <categoryDataset> <dataset incrementType="Group" incrementGroup="ProductGroup" resetType="Group" resetGroup="ProductTypeGroup"/> <categorySeries> <seriesExpression>"Produkt"</seriesExpression> <categoryExpression>$F{ProductTypeDisplayName}</categoryExpression> <valueExpression>$V{ProductTypeDisplayNameSumGroup}</valueExpression> <labelExpression></labelExpression> </categorySeries> </categoryDataset> <bar3DPlot> <plot foregroundAlpha="0.5"/> </bar3DPlot> </bar3DChart> </band> </groupHeader> </group> <group name="ProductGroup" isReprintHeaderOnEachPage="false"> <groupExpression><![CDATA[$F{ProductTypeDisplayName}]]></groupExpression> <groupFooter> <band height="18"> <textField> <reportElement style="Arial_Bold" mode="Opaque" x="10" y="2" width="100" height="15" backcolor="#c0c0c0"/> <textElement> <font/> </textElement> <textFieldExpression class="java.lang.String"><![CDATA[$F{ProductTypeDisplayName}]]></textFieldExpression> </textField> <textField> <reportElement style="Arial_Bold" mode="Opaque" x="110" y="2" width="400" height="15" backcolor="#c0c0c0"/> <textElement textAlignment="Right"> <font/> </textElement> <textFieldExpression class="java.lang.Integer"><![CDATA[$V{ProductTypeDisplayNameSumGroup}]]></textFieldExpression> </textField> </band> </groupFooter> </group> </jasperReport> Link to comment Share on other sites More sharing options...
Teodor Danciu Posted August 24, 2006 Share Posted August 24, 2006 Hi, You could use a chart customizer implementation to control the color of chart bars, just like we do in the /demo/samples/charts/BarChartReport I hope this helps.Teodor Link to comment Share on other sites More sharing options...
sazzadul Posted August 24, 2006 Author Share Posted August 24, 2006 Thanks for your suggestion but I have already tried that. The problem is I can't controll colour on each bar, with this customizer the colour is set on whole plot. I got to have differnt colour on each bar. Please help me to solve this problem. import net.sf.jasperreports.engine.JRChartCustomizer;import net.sf.jasperreports.engine.JRChart;import org.jfree.chart.JFreeChart;import org.jfree.chart.renderer.category.BarRenderer; import java.awt.*; public class BarChartCustomizer implements JRChartCustomizer{ public void customize(JFreeChart chart, JRChart jasperChart) { BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer(); renderer.setSeriesPaint(0, Color.green); }} Link to comment Share on other sites More sharing options...
javydreamercsw Posted August 25, 2006 Share Posted August 25, 2006 Isn't this solved creating different series? Each series is assigned a color during run time... Link to comment Share on other sites More sharing options...
bklawans Posted August 25, 2006 Share Posted August 25, 2006 All the bars in a single series will be the same color. Otherwise if there is more than one series you won't be able to tell which bars go with which series. -Barry Link to comment Share on other sites More sharing options...
atanupanda Posted February 6, 2007 Share Posted February 6, 2007 HiThis is Atanu. I am very new in ireport and also in java environment. In the ireport I have designed a template .like this.please look on attach filesize=150C:Documents and SettingsAtanuMy Documentsgraph.jpeg[/img]Now I want to plot a line graph on the basis of the each data like t1 t2 ---t5 and lcl, ucl, actual value for each row.That I have done. Now my problem is that I have to change the color of points of t1 t2 ---t5 on the basis of Lcl and Ucl . If the value of t1 ,or t2 or ----t5 are between Ucl and Lcl the color will be blue. And if it out side of Lcl and Ucl then it will be red..I want the following figure. Where the upper bold line is Ucl and lower bold line isLclsize=150C:Documents and SettingsAtanuMy Documentsdata.jpeg[/img] Actually I have got a information that for that I have to write a customizer class for chart. Also I have write it . Code:import net.sf.jasperreports.engine.*;import net.sf.jasperreports.view.JasperViewer;import net.sf.jasperreports.engine.JREmptyDataSource;import java.util.*;import java.sql.DriverManager;import java.sql.Connection;import java.sql.SQLException;import net.sf.jasperreports.engine.JRAbstractChartCustomizer;import javax.sql.*;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.renderer.category.*;import org.jfree.chart.renderer.*;import org.jfree.chart.ChartRenderingInfo;import org.jfree.chart.renderer.category.BarRenderer;import org.jfree.chart.renderer.category.LevelRenderer;import org.jfree.chart.renderer.category.LayeredBarRenderer;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Connection;import java.util.HashMap;import java.util.Map;import java.lang.String;import net.sf.jasperreports.engine.JRException;import net.sf.jasperreports.engine.JasperExportManager;import net.sf.jasperreports.view.JasperViewer;import net.sf.jasperreports.engine.xml.JRXmlLoader;import net.sf.jasperreports.engine.JasperCompileManager;import net.sf.jasperreports.engine.JasperFillManager;import net.sf.jasperreports.engine.JasperPrint;import net.sf.jasperreports.engine.design.JasperDesign;import net.sf.jasperreports.engine.JasperReport;import net.sf.jasperreports.engine.JRChartDataset; import net.sf.jasperreports.engine.JRChartPlot; import org.jfree.chart.renderer.category.BarRenderer3D; import org.jfree.chart.renderer.category.LineAndShapeRenderer;import org.jfree.chart.axis.CategoryLabelPositions;import org.jfree.chart.renderer.category.LineRenderer3D;import java.awt.*;import net.sf.jasperreports.engine.JRChart;import net.sf.jasperreports.engine.JRChartCustomizer;import org.jfree.chart.JFreeChart;import net.sf.jasperreports.engine.*;import java.awt.Color;import net.sf.jasperreports.engine.JRChart;import net.sf.jasperreports.engine.JRChartCustomizer;import org.jfree.chart.JFreeChart;import org.jfree.chart.axis.CategoryAxis;import org.jfree.chart.axis.CategoryLabelPositions;import org.jfree.chart.plot.CategoryPlot;import org.jfree.chart.renderer.category.BarRenderer3D;import java.lang.Object; public class LineChartCustomizer extends JRAbstractChartCustomizer { public void customize(JFreeChart chart, JRChart jasperChart) { LineAndShapeRenderer renderer = (LineAndShapeRenderer) chart.getCategoryPlot().getRenderer(); renderer.setSeriesPaint(1, Color.green); renderer.setSeriesPaint(4, Color.orange); chart.setTitle("Setting the title "«»); } }Now this customize class ok running successfully with creating jar files.Now I want to create a logic to check the value of t1 t2 t3 t5 with respect to UCL and LCL. How can I fetch data from report.Or is there any other way to do this.Is there any way to pass value from iReport to customizer class ? What should I do. Please please help me. It’s urget for me. Any help would be greatly appreciated. Thanks in advance. [file name=query-37ab101e3a539a71be9c962f72749d92.doc size=49152]http://www.jasperforge.org/components/com_joomlaboard/uploaded/files/query-37ab101e3a539a71be9c962f72749d92.doc[/file] [file name=query-fb85ddd020eca5e8437b37d2b6de10db.doc size=49152]http://www.jasperforge.org/components/com_joomlaboard/uploaded/files/query-fb85ddd020eca5e8437b37d2b6de10db.doc[/file] Link to comment Share on other sites More sharing options...
vandana Posted March 13, 2007 Share Posted March 13, 2007 Hi I am also facing the same problem .I have one cutomizer class ,which is used by two charts.Also i am randomnly generate colors in the class.So color in the 2 graphs are in different order.Please help me.. Thanks in advance Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now