Jasper reports JfreeChart自定义票证标签

Jasper reports JfreeChart自定义票证标签,jasper-reports,jfreechart,Jasper Reports,Jfreechart,我正在使用JFreechart在使用JasperReports生成的报告中绘制一个图形(实际上我使用的是使用JasperReports的) 我正在绘制一个条形图,我希望在轴上的标签上有自定义字符串。一幅画能更好地解释一切 现在我有了这个: 我想得到这个: 一些建议?是解决您问题的方法。您需要为每个值提供一个带有文本的新轴 String[]等级=新字符串[6]; 等级[0]=“0”; 等级[1]=“String1”; 等级[2]=“String2”; 等级[3]=“String3”; 等级[4

我正在使用JFreechart在使用
JasperReports
生成的报告中绘制一个图形(实际上我使用的是使用JasperReports的)

我正在绘制一个
条形图
,我希望在轴上的标签上有自定义字符串。一幅画能更好地解释一切

现在我有了这个:

我想得到这个:

一些建议?

是解决您问题的方法。您需要为每个值提供一个带有文本的新轴

String[]等级=新字符串[6];
等级[0]=“0”;
等级[1]=“String1”;
等级[2]=“String2”;
等级[3]=“String3”;
等级[4]=“String4”;
等级[5]=“”;
SymbolAxis rangeAxis=新的SymbolAxis(“,等级);
rangeAxis.setTickUnit(新的NumberTickUnit(1));
范围轴。设置范围(0,5);
plot.setRangeAxis(rangeAxis);

这是完整的代码

导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.Paint;
导入org.jfree.chart.ChartFactory;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.axis.NumberTickUnit;
导入org.jfree.chart.axis.SymbolAxis;
导入org.jfree.chart.plot.CategoryPlot;
导入org.jfree.chart.plot.PlotOrientation;
导入org.jfree.chart.renderer.category.derer;
导入org.jfree.data.category.CategoryDataset;
导入org.jfree.data.category.DefaultCategoryDataset;
导入org.jfree.ui.ApplicationFrame;
导入org.jfree.ui.RefineryUtilities;
公共类BarChartDemo7扩展了ApplicationFrame{
静态类CustomRenderer扩展了Derrer{
私人最终油漆[]颜色1;
私人最终油漆[]颜色2;
公共自定义渲染器(绘制[]颜色1,绘制[]颜色2){
this.colors1=colors1;
this.colors2=colors2;
}
@凌驾
公共绘制getItemPaint(int系列,int类别){
如果(类别==4)
返回this.colors2[系列%this.colors1.length];
其他的
返回this.colors1[系列%this.colors1.length];
}
}
公共条形图Demo7(字符串标题){
超级(标题);
CategoryDataset dataSet=createDataset();
JFreeChart chart=createChart(数据集);
ChartPanel面板=新的ChartPanel(图表);
面板。设置首选尺寸(新尺寸(800800));
设置内容窗格(面板);
}
私有静态CategoryDataset createDataset(){
//行键。。。
最终字符串序列1=“ABC”;
最终字符串序列2=“XYZ”;
//列键。。。
最终字符串类别1=“A”;
最终字符串类别2=“B”;
最终字符串类别3=“C”;
最终字符串类别4=“D”;
最终字符串类别5=“E”;
最终字符串类别6=“F”;
//创建数据集。。。
最终DefaultCategoryDataset数据集=新的DefaultCategoryDataset();
dataset.addValue(0,系列1,类别1);
dataset.addValue(1,系列1,类别2);
dataset.addValue(4,系列1,类别3);
dataset.addValue(3,系列1,类别4);
dataset.addValue(2,系列1,类别5);
dataset.addValue(4,系列1,类别6);
dataset.addValue(4,系列2,类别1);
dataset.addValue(0,系列2,类别2);
dataset.addValue(0,系列2,类别3);
addValue(4,系列2,类别4);
dataset.addValue(3,系列2,类别1);
dataset.addValue(2,系列2,类别2);
dataset.addValue(1,系列2,类别5);
addValue(4,系列2,类别4);
返回数据集;
}
私有静态JFreeChart createChart(CategoryDataset数据集){
//创建图表。。。
JFreeChart chart=ChartFactory.createBarChart(
“ABC”,
"",                      
"",                         
数据集,
水平方向,
符合事实的
符合事实的
错误的
);
图表.立根底色漆(颜色.白色);
CategoryPlot=(CategoryPlot)chart.getPlot();
立根底色漆(颜色:白色);
plot.setDomainGridlinePaint(颜色:黑色);
plot.setRangeGridlinePaint(颜色:黑色);
字符串[]等级=新字符串[6];
等级[0]=“0”;
等级[1]=“String1”;
等级[2]=“String2”;
等级[3]=“String3”;
等级[4]=“String4”;
等级[5]=“”;
SymbolAxis rangeAxis=新的SymbolAxis(“,等级);
rangeAxis.setTickUnit(新的NumberTickUnit(1));
范围轴。设置范围(0,5);
plot.setRangeAxis(rangeAxis);
Color[]color1=新颜色[]{Color.red,Color.green,Color.blue};
Color[]color2=新颜色[]{Color.gray,Color.gray.darker()};
setRenderer(新的CustomRenderer(color1,color2));
收益表;
}
公共静态void main(字符串[]args){
BarChartDemo7演示=新的BarChartDemo7(“ABC”);
demo.pack();
RefineryUtilities.centerFrameOnScreen(演示版);
demo.setVisible(true);
}
}
是您问题的解决方案。您需要为每个值提供一个带有文本的新轴

String[]等级=新字符串[6];
等级[0]=“0”;
等级[1]=“String1”;
等级[2]=“String2”;
等级[3]=“String3”;
等级[4]=“String4”;
等级[5]=“”;
SymbolAxis rangeAxis=新的SymbolAxis(“,等级);
rangeAxis.setTickUnit(新的NumberTickUnit(1));
范围轴。设置范围(0,5);
plot.setRangeAxis(rangeAxis);

这是完整的代码

导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.Paint;
导入org.jfree.chart.ChartFactory;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入org.jfree.chart.axis.NumberTickUnit;
导入org.jfree.chart.axis.SymbolAxis;
导入org.jfree.chart.plot.CategoryPlot;