- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
您好,我已附上屏幕截图供您引用。我使用 Jfree 图表作为条形图,并使用百分比。在某些情况下,百分比和计数会重叠。所以请根据 JFree 图表中的重叠给我建议。
public void writeOccurrenceBasedParetoChart(HttpServletResponse response) throws IOException
{
String METHOD_NAME = "writeOccurrenceBasedParetoChart";
log.entering(CLASS_NAME, METHOD_NAME);
CategoryDataset dataset1 = createDataSetForPercentBasedChart1();
CategoryDataset dataset2 = createDataSetForPercentBasedChart2();
String rangeAxisLabel = "";
String numOfSupplrs = "";
//Behind Schedule "4"
if(searchRatingElement.equalsIgnoreCase("4"))
{
System.out.println("*******************searchRatingElement"+searchRatingElement);
rangeAxisLabel = I18nMessageUtil.getMessage(CommonUtil.getLocale(), "label.reports.wdid.ovrshptpcs");
}
else
{
rangeAxisLabel = I18nMessageUtil.getMessage(CommonUtil.getLocale(), "label.reports.wdid.ovrshptpcs");
}
JFreeChart chart = ChartFactory.createBarChart(
"", // chart title
"", // domain axis label
rangeAxisLabel, // range axis label
dataset1, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
true, // tooltips?
false // URLs?
);
// NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
// set the background color for the chart...
chart.setBackgroundPaint(Color.white);
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDataset(1, dataset2);
plot.mapDatasetToRangeAxis(1, 1);
CategoryItemRenderer renderer1 = plot.getRenderer();
renderer1.setSeriesItemLabelGenerator(0,new CategoryItemLabelGenerator() {
public String generateRowLabel(final CategoryDataset arg0, final int arg1) {
// TODO Auto-generated method stub
return null;
}
public String generateLabel(final CategoryDataset dataset1,final int series,final int category) {
String result = null;
//CHAPTER 12. ITEM LABELS 91
final Number value = dataset1.getValue(series, category);
if (value != null) {
final double v = value.doubleValue();
if (v > 0) {
result = value.toString(); // could apply formatting here
}
}
return result;
}
public String generateColumnLabel(final CategoryDataset arg0, final int arg1) {
// TODO Auto-generated method stub
return null;
}
});
renderer1.setSeriesItemLabelsVisible(0,true);
BarRenderer renderer = (BarRenderer) plot.getRenderer();
renderer.setDrawBarOutline(false);
renderer.setSeriesOutlinePaint(0,Color.BLACK);
renderer.setDrawBarOutline(true);
renderer.setMaximumBarWidth(0.02);
renderer.setSeriesPaint(0,new Color(170, 0, 85));
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(.6));
domainAxis.setLabelFont(new Font("Helvetica", Font.BOLD, 14));
domainAxis.setTickLabelFont(new Font("Helvetica", Font.BOLD, 14));
//Behind Schedule "4"
if(searchRatingElement.equalsIgnoreCase("4"))
{
System.out.println("||||||||||||||||||||||||||||||||searchRatingElement"+searchRatingElement);
numOfSupplrs = I18nMessageUtil.getMessage(CommonUtil.getLocale(), "label.reports.wdid.bhndschpctforchart");
}
else
{
numOfSupplrs = I18nMessageUtil.getMessage(CommonUtil.getLocale(), "label.reports.wdid.ovrshptpctforchart");
}
ValueAxis axis2 = new NumberAxis(numOfSupplrs);
axis2.setLabelFont(new Font("Helvetica", Font.BOLD, 14));
axis2.setTickLabelFont(new Font("Helvetica", Font.PLAIN, 14));
//if(!this.isValueDataZeros)
//axis2.setRange(0,13);
plot.setRangeAxis(1, axis2);
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
// if(!this.isNumberDataZeros)
//rangeAxis.setRange(0,90);
//rangeAxis.setTickUnit(new NumberTickUnit(1));
rangeAxis.setLabelFont(new Font("Helvetica", Font.BOLD, 14));
rangeAxis.setTickLabelFont(new Font("Helvetica", Font.PLAIN, 14));
LineAndShapeRenderer renderer2 = new LineAndShapeRenderer();
renderer2.setSeriesPaint(0, Color.BLUE);
/*Start */
renderer2.setSeriesItemLabelGenerator(0,new CategoryItemLabelGenerator() {
public String generateRowLabel(final CategoryDataset arg0, final int arg1) {
// TODO Auto-generated method stub
return null;
}
public String generateLabel(final CategoryDataset dataset1,final int series,final int category) {
String result = null;
//CHAPTER 12. ITEM LABELS 91
final Number value = dataset1.getValue(series, category);
if (value != null) {
final double v = value.doubleValue();
if (v > 0) {
result = value.toString(); // could apply formatting here
}
}
return result;
}
public String generateColumnLabel(final CategoryDataset arg0, final int arg1) {
// TODO Auto-generated method stub
return null;
}
});
renderer2.setSeriesItemLabelsVisible(0,true);
/* End */
plot.setRenderer(1, renderer2);
plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart,
1150, 450);
}
/**
*
*/
public DefaultCategoryDataset createDataSetForPercentBasedChart1()
{
String METHOD_NAME = "createDataSetForPercentBasedChart1";
log.entering(CLASS_NAME, METHOD_NAME);
DefaultCategoryDataset dataSetForOccurrenceBasedChart = new DefaultCategoryDataset();
boolean flagForPercentPareto = false;
String occurrenceCountLabelName = null;
try
{
if(paretoReportBasedDataQO != null && paretoReportBasedDataQO.size()>0)
{
//Behind Schedule "4"
if(searchRatingElement.equalsIgnoreCase("4"))
{
occurrenceCountLabelName = I18nMessageUtil.getMessage(CommonUtil.getLocale(), "label.reports.wdid.bhndschpctforchart");
}
else
{
occurrenceCountLabelName = I18nMessageUtil.getMessage(CommonUtil.getLocale(), "label.reports.wdid.ovrshptpcs");
}
if(!flagForPercentPareto)
{
for(int i =0;i<paretoReportBasedDataQO.size();i++)
{
dataSetForOccurrenceBasedChart.addValue(paretoReportBasedDataQO.get(i).getOverShipmentPiecesCount(), occurrenceCountLabelName, paretoReportBasedDataQO.get(i).getSupplierName());
}
}
}
}
catch(Exception exceptionOccurrenceBasedChart)
{
flagForPercentPareto = true;
System.out.println("Exception In createDataSetForPercentBasedChart1 : "+exceptionOccurrenceBasedChart.getMessage());
}
log.exiting(CLASS_NAME, METHOD_NAME);
return dataSetForOccurrenceBasedChart;
}
/**
*
*/
public DefaultCategoryDataset createDataSetForPercentBasedChart2()
{
String METHOD_NAME = "createDataSetForPercentBasedChart2";
log.entering(CLASS_NAME, METHOD_NAME);
DefaultCategoryDataset dataSetForOccurrenceBasedChart = new DefaultCategoryDataset();
boolean flagForPercentPareto = false;
String occurrenceCountLabelName = null;
try
{
if(paretoReportBasedDataQO != null && paretoReportBasedDataQO.size()>0)
{
if(searchRatingElement.equalsIgnoreCase("4"))
{
occurrenceCountLabelName = I18nMessageUtil.getMessage(CommonUtil.getLocale(), "label.reports.wdid.bhndschpctforchart");
}
else
{
occurrenceCountLabelName = I18nMessageUtil.getMessage(CommonUtil.getLocale(), "label.reports.wdid.ovrshptpctforchart");
}
if(!flagForPercentPareto)
{
for(int i =0;i<paretoReportBasedDataQO.size();i++)
{
dataSetForOccurrenceBasedChart.addValue(paretoReportBasedDataQO.get(i).getOverShipmentPercentageCount(), occurrenceCountLabelName, paretoReportBasedDataQO.get(i).getSupplierName());
}
}
}
}
catch(Exception exceptionOccurrenceBasedChart)
{
flagForPercentPareto = true;
System.out.println("Exception In createDataSetForPercentBasedChart2 : "+exceptionOccurrenceBasedChart.getMessage());
}
log.exiting(CLASS_NAME, METHOD_NAME);
return dataSetForOccurrenceBasedChart;
}
但是图像和代码是不同的。我发布的图像是示例...
最佳答案
关于java - 如何更改JFree图表而不重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13602893/
我正在使用 Studio 创建 JasperReports 的报告。我需要增加折线图的宽度(默认值太细)。据我所知,JasperReports 使用 Jfeechart 作为图表,我用谷歌搜索了这段代
我正在尝试创建一个新的 JFreeChart,我的项目构建路径中有 JCommon (1.0.22) 和 JFreeChart (1.0.17-demo); 但是,当我尝试创建代码时,在这种情况下;
如何修改 ChartPanel 的 mouseDragged 事件,以便在缩放完成之前/之后进行一些处理? 我有以下图表面板, JFreeChart chart = new JFreeChart(
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我在这里有一个简单的甘特图,它由许多任务组成,就像这样: TaskSeries s1 = new TaskSeries("Planned Tasks"); Task newTask = new Tas
我想在我的饼图中个性化我的数据标签,因为在我的图例中我看到数据=值,在标签中我看到数据=值。我如何才能只看到图例中的名称数据和标签中的值?我绘制图表的代码是这样的: public JfreeC
我想在我的 JFree charts 中使用我的 Axis变成 % 而不是普通数字 有谁知道我如何修改我的代码以实现这种情况。 应该说我的表格已经是百分比了,但它自己的图表不是! 更新 这是我到目前为
我正在尝试使用 jfree 图表库创建一个折线图,我需要显示与折线图中每个索引关联的值,我不能为此使用工具提示,因为我正在将图表转换为图像,是吗一种在每个索引顶部显示值的方法? 谢谢,巴维亚 最佳答案
有没有我们可以找到示例源代码/教程/帮助使用 jfreecharts 的链接?? 谢谢。 最佳答案 如果你仔细观察的话,它们有很多。 http://www.vogella.de/articles/JF
我对java不太了解,但希望以下代码作为小程序运行。请求对此真诚的帮助。 任何人都可以帮助我将此代码作为小程序运行吗?这是 Jfree 图表,我想将它作为小程序运行。请提出建议。 package or
我正在寻找一种在 JFree Chart 创建的图像中插入特定评论/注释的方法。注释可以位于图像 (png) 上的任意位置、图表上方或下方。 有办法做到这一点吗? 最佳答案 要添加文本,addSubt
通过使用 StandardCategoryItemLabelGenerator() 我能够在条形图上显示精确的范围轴值,现在我的问题是我不想显示范围轴值而是我想显示该条形图的其他一些值我该如何实现?
我在我的应用程序中使用 Jfree 图表。国际化非常适合德语、俄语、法语...但在中文、日语中,x 轴和 y 轴文本看起来像方框。如何解决这个问题? 谢谢。 最佳答案 检查下面的链接,它似乎在讨论完全
我正在尝试使用 jfree 图表显示散点图和 XYline 图表。我可以一次展示它们。我有一个组合框,可让您选择要绘制的绘图类型。在此基础上,我必须使用 jfree 图表绘制相应的图。 我有以下代码来
我正在使用 jfree Chart 绘制一些点进行定位。 问题是图表是在灰色表面上绘制的,而不是在我的平面图上绘制的。所以我尝试使用背景图像,但这将图像放在背景中并且无法使用,因为我需要它。 我想用图
我想使用 JFree 在多系列图表中的条形顶部显示标签。请告诉我如何做到这一点? 最佳答案 由于这是一个条形图,添加一个 StandardCategoryItemLabelGenerator 的实例到
如何增加显示颜色的图例键的大小。字体大小由 chart.getLegend().setItemFont(new Font("SansSerif", Font.PLAIN, 12)); 调整 但我找不到
谁能告诉我如何减小 jcommon-1.0.16.jar 和 jfreechart-1.0.13.jar(主要是 jfreechart-1.0.13.jar )可执行文件的大小。我需要减小我的嵌入式产
我是 JFree 的新手。我想知道如何创建数据集,使特定作业的所有操作都具有相同的颜色(例如,O111、O122、O133、O144 具有相同的颜色,机器排列如图 2 所示)。 我尝试使用 TaskS
我在报告中使用 jfree 图表。我想从饼图中删除切片部分: 另外,我想让它以切片值为中心,并在我当前使用的脚本下面提到: import java.awt.Color; import org.jfre
我是一名优秀的程序员,十分优秀!