java容器 坐标的起点_jfreeChart中如何使纵坐标的起点位置0与横坐标的起点位置0在同一地方...

这篇博客展示了如何使用Java JFreeChart库创建线图,并确保纵坐标起点与横坐标起点都在0位置。通过调整CategoryAxis和NumberAxis的设置,实现了纵坐标从0开始并设置了数据精度、网格线、标签字体等细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.test;

import java.awt.Color;

import java.awt.Font;

import java.awt.geom.Rectangle2D;

import java.sql.Date;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.ChartFrame;

import org.jfree.chart.ChartPanel;

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.axis.NumberTickUnit;

import org.jfree.chart.axis.ValueAxis;

import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;

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.data.category.CategoryDataset;

import org.jfree.data.category.DefaultCategoryDataset;

import org.jfree.ui.ApplicationFrame;

import org.jfree.ui.RefineryUtilities;

public class LineCharts extends ApplicationFrame{

public LineCharts(String title) {

super(title);

final CategoryDataset dataset = createDataset();

final JFreeChart chart = createChart(dataset);

final ChartPanel chartPanel = new ChartPanel(chart);

chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));

setContentPane(chartPanel);

}

private CategoryDataset createDataset()

{

String series1 = "1";

String series2 = "2";

String series3 = "3";

String type1 = "1";

String type2 = "2";

String type3 = "3";

String type4 = "4";

String type5 = "5";

String type6 = "6";

String type7 = "7";

String type8 = "8";

String type9 = "9";

String type10 = "10";

String type11 = "11";

String type12 = "12";

// 建立dataset

DefaultCategoryDataset dataset = new DefaultCategoryDataset();

// 以下可以动态添加数据

dataset.addValue(30, series1, type1);

dataset.addValue(90, series1, type2);

dataset.addValue(120, series1, type3);

dataset.addValue(350, series1, type4);

dataset.addValue(360, series1, type5);

dataset.addValue(410, series1, type6);

dataset.addValue(450, series1, type7);

dataset.addValue(520, series1, type8);

dataset.addValue(580, series1, type9);

dataset.addValue(600, series1, type10);

dataset.addValue(30, series1, type11);

dataset.addValue(90, series1, type12);

dataset.addValue(152, series2, type1);

dataset.addValue(350, series2, type2);

dataset.addValue(400, series2, type3);

dataset.addValue(450, series2, type4);

dataset.addValue(520, series2, type5);

dataset.addValue(350, series2, type6);

dataset.addValue(500, series2, type7);

dataset.addValue(550, series2, type8);

dataset.addValue(600, series2, type9);

dataset.addValue(530, series2, type10);

dataset.addValue(152, series2, type11);

dataset.addValue(350, series2, type12);

dataset.addValue(100, series3, type1);

dataset.addValue(150, series3, type2);

dataset.addValue(170, series3, type3);

dataset.addValue(190, series3, type4);

dataset.addValue(250, series3, type5);

dataset.addValue(290, series3, type6);

dataset.addValue(350, series3, type7);

dataset.addValue(550, series3, type8);

dataset.addValue(600, series3, type9);

dataset.addValue(350, series3, type10);

dataset.addValue(100, series3, type11);

dataset.addValue(150, series3, type12);

return dataset;

}

private JFreeChart createChart(final CategoryDataset dataset)

{

// 建立chart

JFreeChart chart = ChartFactory.createLineChart(

"价格走势图", // chart title

"时间", // domain axis label

"价格", // range axis label

dataset, // data

PlotOrientation.VERTICAL, // orientation

true, // include legend

true, // tooltips

true // urls

);

// NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...

CategoryPlot plot = chart.getCategoryPlot();

// 横轴、纵轴显示的标题

plot.setDomainAxis(new CategoryAxis(""));

plot.setRangeAxis(new NumberAxis("分数"));

plot.setRangeGridlinesVisible(true);

// 设置是否显示垂直网格线

plot.setDomainGridlinesVisible(true);

// customise the range axis...

NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();

// 数据轴精度

rangeAxis.setTickUnit(new NumberTickUnit(50));

rangeAxis.setLowerBound(0);

rangeAxis.setUpperBound(600);

rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

rangeAxis.setAutoRangeIncludesZero(true);

rangeAxis.setUpperMargin(0.20);

rangeAxis.setLabelAngle(Math.PI / 2.0);

CategoryAxis axis = plot.getDomainAxis();//获取x轴

chart.getLegend().setItemFont(new Font ("黑体",Font.BOLD,12));//设置底部中文乱码

axis.setTickLabelFont(new Font("黑体",Font.BOLD,12));//设置X轴坐标上的文字

axis.setLabelFont(new Font("黑体",Font.BOLD,12));//设置X轴的标题文字

numberAxis.setTickLabelFont(new Font("黑体",Font.BOLD,12));//设置X轴坐标上的文字

numberAxis.setLabelFont(new Font("黑体",Font.BOLD,12));//设置X轴的标题文字

chart.getTitle().setFont(new Font("黑体",Font.BOLD,18));//设置标题文字

LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();

renderer.setShapesVisible(true);

renderer.setSeriesPaint(3,Color.red);

renderer.setSeriesLinesVisible(3,false);

renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());//显示折点数据

renderer.setItemLabelsVisible(true); */

}

public static void main(final String[] args)

{

final LineCharts demo = new LineCharts("Java Chart");

demo.pack();

RefineryUtilities.centerFrameOnScreen(demo);

demo.setVisible(true);

}

}

作者: Tiafang

发布时间: 2010-09-15

以下是使用 JFreeChart 创建折线图并设置横坐标每隔 n 个坐标值显示一次的示例代码: ```java import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.NumberTickUnit; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; import org.jfree.data.xy.DefaultXYDataset; public class LineChartExample { public static void main(String[] args) { // 新建 XY 数据集 DefaultXYDataset dataset = new DefaultXYDataset(); double[][] data = new double[][] {{1, 2, 3, 4, 5}, {3, 4, 2, 6, 8}}; dataset.addSeries("Series 1", data); // 创建折线图 JFreeChart chart = ChartFactory.createXYLineChart( "Line Chart Example", // 图表标题 "X", // 横坐标标签 "Y", // 纵坐标标签 dataset, // 数据集 PlotOrientation.VERTICAL, // 图表方向 true, // 是否显示图例 true, // 是否生成工具提示 false // 是否生成 URLs ); // 设置横坐标间隔 NumberAxis xAxis = (NumberAxis) ((XYPlot) chart.getPlot()).getDomainAxis(); xAxis.setTickUnit(new NumberTickUnit(2)); // 显示图表 ChartFrame frame = new ChartFrame("Line Chart Example", chart); frame.pack(); frame.setVisible(true); } } ``` 在该示例中,首先创建了一个 `DefaultXYDataset` 对象,并向其中添加了一组数据。然后使用 `ChartFactory` 类的 `createXYLineChart` 静态方法创建了一个折线图,设置了图表标题、横坐标标签、纵坐标标签、数据集等属性。接着,获取折线图的横坐标轴对象,并使用 `setTickUnit` 方法设置横坐标的间隔为 2。最后,使用 `ChartFrame` 类创建了一个窗口,并在其中显示了折线图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值