0 0

jfreechart 柱线一体图 点之间连线显示不了10

用jfreechart做的柱线一体图,但是点之间的连线怎么都显示不了,请各位帮忙解答,谢谢

另外,请问如何在左侧显示柱图与线图分别代表的含义,也就是标签

我的程序如下,可直接运行测试

package com.besttone.zqflight.web;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.SystemColor;
import java.awt.geom.Ellipse2D;
import java.text.NumberFormat;

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.renderer.category.StackedBarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.ui.TextAnchor;

public class Test extends ApplicationFrame {
	public Test(String paramString) {
		super(paramString);
		JFreeChart localJFreeChart = createChart(null, null, null,
				createDataset1(), createDataset2());
		ChartPanel localChartPanel = new ChartPanel(localJFreeChart);
		localChartPanel.setPreferredSize(new Dimension(500, 270));
		setContentPane(localChartPanel);
	}

	private static CategoryDataset createDataset1() {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(1, "2011-08-09", "2011-08-09");
		dataset.addValue(2, "2011-08-10", "2011-08-10");
		dataset.addValue(1, "2011-08-11", "2011-08-11");
		dataset.addValue(0, "2011-08-12", "2011-08-12");
		dataset.addValue(1, "2011-08-13", "2011-08-13");
		dataset.addValue(1, "2011-08-14", "2011-08-14");
		return dataset;
	}

	private static CategoryDataset createDataset2() {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(1440.00f, "2011-08-09", "2011-08-09");
		dataset.addValue(1880.00f, "2011-08-10", "2011-08-10");
		dataset.addValue(1110.00f, "2011-08-11", "2011-08-11");
		dataset.addValue(0f, "2011-08-12", "2011-08-12");
		dataset.addValue(500f, "2011-08-13", "2011-08-13");
		dataset.addValue(1440.00f, "2011-08-14", "2011-08-14");
		return dataset;
		
	}

	private static JFreeChart createChart(String chartTitle, String Xname,
			String Yname, CategoryDataset dataset1, CategoryDataset dataset2) {

		JFreeChart localJFreeChart = ChartFactory.createBarChart3D(chartTitle,
				Xname, Yname, dataset1, PlotOrientation.VERTICAL, false, true,
				false);

		// 获得图表对象
		CategoryPlot categoryPlot = (CategoryPlot) localJFreeChart.getPlot();

		StackedBarRenderer renderer = new StackedBarRenderer();
		renderer.setMaximumBarWidth(0.03);
		categoryPlot.setRenderer(0, renderer);
		categoryPlot.setBackgroundPaint(SystemColor.WHITE);

		renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator(
				"{2}", NumberFormat.getNumberInstance()));
		// Y轴数据设置
		NumberAxis vn = (NumberAxis) categoryPlot.getRangeAxis();

		// y轴数据格式
		vn.setNumberFormatOverride(NumberFormat.getIntegerInstance());

		// y轴上边距
		vn.setUpperMargin(0.03D);

		// y轴下边距
		vn.setLowerMargin(0.03D);

		// 设置数据轴坐标从0开始
		vn.setAutoRangeIncludesZero(true);

		// 数据显示格式是百分比
		vn.setStandardTickUnits(NumberAxis.createStandardTickUnits());

		// 对x 轴上日期显示格式定义
		CategoryAxis dateaxis = categoryPlot.getDomainAxis();

		// x轴标签字体
		dateaxis.setLabelFont(new Font("宋体", Font.PLAIN, 16));

		// 坐标轴线条是否可见
		dateaxis.setAxisLineVisible(false);

		// 左边距
		dateaxis.setLowerMargin(0.03D);

		// 右边距
		dateaxis.setUpperMargin(0.03D);

		// 时间轴垂直显示(重要!!!)
		dateaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);

		NumberAxis numberaxis3 = new NumberAxis();
		// numberaxis3.setNumberFormatOverride(NumberFormat.getNumberInstance());//
		// 设置风格以百分数
		// numberaxis3.setAutoRange(false);
		// numberaxis3.setAutoTickUnitSelection(false);
		numberaxis3.setLowerMargin(0.03D);// 数据轴左边距
		numberaxis3.setUpperMargin(0.03D);// 右边距

		categoryPlot.setRangeAxis(1, numberaxis3);
		categoryPlot.setDataset(1, dataset2);// 设置数据集索引
		categoryPlot.mapDatasetToRangeAxis(1, 1);// 将该索引映射到axis

		categoryPlot.setNoDataMessage("无数据可供显示!");

		ChartUtilities.applyCurrentTheme(localJFreeChart);
		LineAndShapeRenderer renderer1 = new LineAndShapeRenderer();

		BasicStroke realLine = new BasicStroke(1.8f);
		System.out.println(dataset2.getRowCount());
		renderer1.setSeriesStroke(1, realLine);
		for (int i = 0; i < dataset2.getRowCount(); i++) {
			renderer1.setSeriesShape(i, new Ellipse2D.Double(-3.0D, -3.0D,
					8.0D, 8.0D));
		}
		renderer1.setBaseShapesVisible(true);
		renderer1.setDrawOutlines(true);
		renderer1.setUseFillPaint(true);
		renderer1.setBaseFillPaint(Color.WHITE);
		renderer1.setSeriesOutlineStroke(0, new BasicStroke(2.0F));
		renderer1.setBaseLinesVisible(true);
		// renderer1.setSeriesPaint(0, Color.RED);
		renderer1.setSeriesStroke(0, new BasicStroke(2.0F));
		renderer1.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator(
				"{2}", NumberFormat.getNumberInstance()));
		categoryPlot.setRenderer(1, renderer1);
		categoryPlot.setNoDataMessage("无数据可供显示!");
		// 设置2个图像的显示顺序:DatasetRenderingOrder.FORWARD:表示后者放在前面;
		// DatasetRenderingOrder.REVERSE:表示后者放在后面
		categoryPlot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);

		// 设置不能在柱子上正常显示的那些数值的显示方式,将这些数值显示在柱子外面
		ItemLabelPosition itemLabelPositionFallback = new ItemLabelPosition(
				ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT,
				TextAnchor.HALF_ASCENT_LEFT, -0.0D);
		// 设置当不能正常显示柱状值的时候
		renderer.setPositiveItemLabelPositionFallback(itemLabelPositionFallback);
		renderer.setNegativeItemLabelPositionFallback(itemLabelPositionFallback);
		categoryPlot.setRenderer(1, renderer1);

		return localJFreeChart;

	}

	public static JPanel createDemoPanel() {
		JFreeChart localJFreeChart = createChart(null, null, null,
				createDataset1(), createDataset2());
		return new ChartPanel(localJFreeChart);
	}

	public static void main(String[] paramArrayOfString) {
		Test localTest = new Test("JFreeChart: Test.java");
		localTest.pack();
		RefineryUtilities.centerFrameOnScreen(localTest);
		localTest.setVisible(true);
	}
}
2012年2月23日 14:35

1个答案 按时间排序 按投票排序

0 0

renderer1.setBaseFillPaint(Color.WHITE);

改为
renderer1.setBaseFillPaint(Color.RED);


看看。你的代码不全 运行不了。

2012年2月23日 19:03

相关推荐

    JFreeChart柱图

    JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图

    jfreeChart直线web图 显示点上数据及指定线点

    本话题主要聚焦于如何使用`JFreeChart`在Web环境中生成带有指定线点并显示点上数据的直线图。 首先,`JFreeChart`直线图的创建通常涉及以下几个步骤: 1. **创建数据模型**:你需要一个`XYDataset`来存储数据,这...

    JFreeChart混合图表演示

    6. 显示或保存图表:最后,你可以将图表显示在Swing组件中,或者导出为图片文件,如JPEG、PNG等。 在“JFreeChart混合图表”这个示例中,可能包含了创建这样一个混合图表的完整代码和结果图像。解压缩文件后,通过...

    JFreeChart 股票K线图创建过程

    JFreeChart 是一个强大的 Java 图表库,它允许开发者创建各种复杂的图表,包括股票市场中常见的K线图。在金融领域,K线图(也称为日本蜡烛图)是一种常用的技术分析工具,用于展示价格走势。本文将详细介绍如何使用 ...

    JFREECHART生成的柱图

    JFREECHART柱图

    JFreeChart让单组柱子显示不同的颜色的办法

    当我们需要创建一个柱状图,并且希望在同一组数据中,每根柱子显示不同的颜色时,JFreeChart提供了灵活的配置方式来实现这一需求。下面我们将详细探讨如何利用JFreeChart让单组柱子显示不同的颜色。 首先,我们需要...

    JFreeChart+让横轴的标题竖着显示

    在Java编程环境中,JFreeChart库是一个非常强大的工具,用于创建各种类型的图表,如线图、柱状图、饼图等。在处理复杂的数据显示时,可能会遇到横轴标签过于密集,导致阅读困难的问题。本教程将详细介绍如何使用...

    JFreechart 在linux下不显示及中文乱码问题

    标题“JFreechart在Linux下不显示及中文乱码问题”指出的是在使用JFreechart库创建图表时,在Linux操作系统环境下遇到的两个主要问题:图表无法正常显示以及中文字符出现乱码。JFreechart是一个Java库,用于生成高...

    JFreeChart画图 饼状图 单组柱状图 多组柱状图 堆积柱状图 折线图

    JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...

    基于JFreeChart的股票交易K线图停牌日期缺口优化完整解决方案

    在金融数据分析领域,股票交易K线图是一种广泛使用的可视化工具,它...通过对CSV数据的处理、插值或标记方法的应用,以及JFreeChart的强大功能,我们可以得到连续不间断的K线图,从而更好地洞察股票市场的波动和趋势。

    jfreeChart生成的线状图,饼状图,柱状图

    线状图是通过点与点之间的连线来展示数据变化趋势的图表。在JFreeChart中,可以使用`LineChartDemo1`作为示例代码来创建一个简单的线状图。线状图主要适用于显示时间序列数据,比如监测一段时间内的销售量、股票价格...

    JFreeChart 折线、柱状组合图

    public JFreeChart createChart(String Ytitle, String title, CategoryDataset lineData, CategoryDataset barData) { //参考附件 return chart; } //struts 部分 &lt;!--begin 维优特例 --&gt; ...

    jfreechart 生成折线图,饼图,柱状图,堆栈柱状图

    JFreeChart 提供了 `XYPlot` 类来创建折线图,你可以通过 `LineAndShapeRenderer` 设置线条样式和数据点形状。源码中可能包含设置X轴和Y轴数据,以及自定义线条颜色和宽度的示例。 2. **饼图**(Pie Chart):饼图...

    JFREECHART画K线图

    K线图的实例哦,这个好点,那个我乱改拉``

    jfreechart雷达图

    在本篇中,我们将深入探讨如何利用JFreeChart来制作雷达图(也称为蜘蛛图或星形图),并理解其相关知识点。 1. **JFreeChart简介** JFreeChart是一个开源项目,其目标是提供一个可以免费使用的高质量图表API。它...

    使用 jfreechart 生成 曲线、柱状图、饼状图、分布图 展示到JSP

    以生产线型趋势图为例,我们创建一个`TimeSeriesCollection`作为数据集,其中`TimeSeries`用于存储特定时间点的数据。在这个例子中,我们使用了`Day`类来表示每一天,并且添加了访问次数。以下是一个简单的代码片段...

    jfreechart生成统计图的例子(柱线饼)

    JFreeChart是一款强大的Java库,用于生成各种类型的2D图表,包括柱状图、线图、饼图等。它在IT行业中广泛应用于数据分析和可视化,为开发者提供了丰富的接口和类来定制图表样式和内容。本例子将详细介绍如何利用...

    JFreeChart 饼图,柱图,折线图

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,包括饼图、柱状图和折线图。在Java应用中,JFreeChart是一个不可或缺的工具,尤其在数据分析、报表生成或可视化数据的场景下。下面我们将深入...

    JFreechart 双坐标Y轴 折点显示数据

    在【标题】"JFreeChart 双坐标Y轴 折点显示数据"中,所涉及的知识点是JFreeChart如何实现双Y轴坐标系以及在折点处显示数据的技巧。 首先,双Y轴坐标系常用于对比不同尺度的数据,例如一个数据系列的值范围可能远...

    jfreechart绘制的风速风向玫瑰图

    jfreechart绘制的风速风向玫瑰图 jfreechart是Java中一个流行的图表库,它提供了许多种类的图表,包括柱状图、折线图、饼图、雷达图等。本文主要介绍如何使用jfreechart绘制风速风向玫瑰图。 首先,了解jfreechart...

Global site tag (gtag.js) - Google Analytics