用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);
}
}
相关推荐
JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图JFreeChart柱图
本话题主要聚焦于如何使用`JFreeChart`在Web环境中生成带有指定线点并显示点上数据的直线图。 首先,`JFreeChart`直线图的创建通常涉及以下几个步骤: 1. **创建数据模型**:你需要一个`XYDataset`来存储数据,这...
6. 显示或保存图表:最后,你可以将图表显示在Swing组件中,或者导出为图片文件,如JPEG、PNG等。 在“JFreeChart混合图表”这个示例中,可能包含了创建这样一个混合图表的完整代码和结果图像。解压缩文件后,通过...
JFreeChart 是一个强大的 Java 图表库,它允许开发者创建各种复杂的图表,包括股票市场中常见的K线图。在金融领域,K线图(也称为日本蜡烛图)是一种常用的技术分析工具,用于展示价格走势。本文将详细介绍如何使用 ...
JFREECHART柱图
当我们需要创建一个柱状图,并且希望在同一组数据中,每根柱子显示不同的颜色时,JFreeChart提供了灵活的配置方式来实现这一需求。下面我们将详细探讨如何利用JFreeChart让单组柱子显示不同的颜色。 首先,我们需要...
标题“JFreechart在Linux下不显示及中文乱码问题”指出的是在使用JFreechart库创建图表时,在Linux操作系统环境下遇到的两个主要问题:图表无法正常显示以及中文字符出现乱码。JFreechart是一个Java库,用于生成高...
在Java编程环境中,JFreeChart库是一个非常强大的工具,用于创建各种类型的图表,如线图、柱状图、饼图等。在处理复杂的数据显示时,可能会遇到横轴标签过于密集,导致阅读困难的问题。本教程将详细介绍如何使用...
JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...
在金融数据分析领域,股票交易K线图是一种广泛使用的可视化工具,它...通过对CSV数据的处理、插值或标记方法的应用,以及JFreeChart的强大功能,我们可以得到连续不间断的K线图,从而更好地洞察股票市场的波动和趋势。
线状图是通过点与点之间的连线来展示数据变化趋势的图表。在JFreeChart中,可以使用`LineChartDemo1`作为示例代码来创建一个简单的线状图。线状图主要适用于显示时间序列数据,比如监测一段时间内的销售量、股票价格...
public JFreeChart createChart(String Ytitle, String title, CategoryDataset lineData, CategoryDataset barData) { //参考附件 return chart; } //struts 部分 <!--begin 维优特例 --> ...
JFreeChart 提供了 `XYPlot` 类来创建折线图,你可以通过 `LineAndShapeRenderer` 设置线条样式和数据点形状。源码中可能包含设置X轴和Y轴数据,以及自定义线条颜色和宽度的示例。 2. **饼图**(Pie Chart):饼图...
K线图的实例哦,这个好点,那个我乱改拉``
在本篇中,我们将深入探讨如何利用JFreeChart来制作雷达图(也称为蜘蛛图或星形图),并理解其相关知识点。 1. **JFreeChart简介** JFreeChart是一个开源项目,其目标是提供一个可以免费使用的高质量图表API。它...
以生产线型趋势图为例,我们创建一个`TimeSeriesCollection`作为数据集,其中`TimeSeries`用于存储特定时间点的数据。在这个例子中,我们使用了`Day`类来表示每一天,并且添加了访问次数。以下是一个简单的代码片段...
JFreeChart是一款强大的Java库,用于生成各种类型的2D图表,包括柱状图、线图、饼图等。它在IT行业中广泛应用于数据分析和可视化,为开发者提供了丰富的接口和类来定制图表样式和内容。本例子将详细介绍如何利用...
JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,包括饼图、柱状图和折线图。在Java应用中,JFreeChart是一个不可或缺的工具,尤其在数据分析、报表生成或可视化数据的场景下。下面我们将深入...
在【标题】"JFreeChart 双坐标Y轴 折点显示数据"中,所涉及的知识点是JFreeChart如何实现双Y轴坐标系以及在折点处显示数据的技巧。 首先,双Y轴坐标系常用于对比不同尺度的数据,例如一个数据系列的值范围可能远...
jfreechart绘制的风速风向玫瑰图 jfreechart是Java中一个流行的图表库,它提供了许多种类的图表,包括柱状图、折线图、饼图、雷达图等。本文主要介绍如何使用jfreechart绘制风速风向玫瑰图。 首先,了解jfreechart...