最近在学习jfreechart画图,下面的程序:
package com.yyh.jfreechart;import java.awt.Font;
import java.io.File;
import java.text.SimpleDateFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
public class TimeSeriesExample
{
public static void main(String[] args)
{
// 创建第一条时序线
TimeSeries pop1 = new TimeSeries("Population1", Day.class);
pop1.add(new Day(10, 1, 2001), 100);
pop1.add(new Day(10, 2, 2002), 150);
pop1.add(new Day(10, 3, 2003), 250);
pop1.add(new Day(10, 4, 2004), 275);
pop1.add(new Day(10, 5, 2005), 325);
pop1.add(new Day(10, 6, 2006), 425);
// 创建第二条时序线
TimeSeries pop2 = new TimeSeries("Population2", Day.class);
pop2.add(new Day(20, 1, 2001), 200);
pop2.add(new Day(20, 2, 2002), 250);
pop2.add(new Day(20, 3, 2003), 450);
pop2.add(new Day(20, 4, 2004), 475);
pop2.add(new Day(20, 5, 2005), 125);
pop2.add(new Day(20, 6, 2006), 150);
//创建第三条时序线
TimeSeries pop3 = new TimeSeries("Population3", Day.class);
pop3.add(new Day(20, 1, 2001), 300);
pop3.add(new Day(20, 2, 2002), 300);
pop3.add(new Day(20, 3, 2003), 300);
pop3.add(new Day(20, 4, 2004), 300);
pop3.add(new Day(20, 5, 2005), 300);
pop3.add(new Day(20, 6, 2006), 300);
// 创建一个时序集合
TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(pop1);
dataset.addSeries(pop2);
dataset.addSeries(pop3);
// 产生时序图
// JFreeChart chart = ChartFactory.createTimeSeriesChart("标题","x轴标志","y轴标志","设置数据",是否显示图形,是否进行提示,是否配置报表存放地址);
JFreeChart chart = ChartFactory.createTimeSeriesChart("人口统计时序图","Date","Population",dataset,true,true,false);
// 设置日期显示格式
XYPlot plot = chart.getXYPlot();
DateAxis axis = (DateAxis) plot.getDomainAxis();
//axis.setDateFormatOverride(new SimpleDateFormat("MM-dd-yyyy"));
axis.setDateFormatOverride(new SimpleDateFormat("yyyy"));
axis.setLabelFont(new Font("黑体", Font.TRUETYPE_FONT, 12)); try{
// 创建图形显示面板
ChartFrame cf = new ChartFrame("时序图",chart);
cf.pack();
// 设置图片大小
cf.setSize(500,300);
// 设置图形可见
cf.setVisible(true);
// // 保存图片到指定文件夹
ChartUtilities.saveChartAsJPEG(new File("E:\\TimeSeriesChart1.jpg"), chart, 500, 300);
} catch (Exception e){
System.err.println("Problem occurred creating chart.");
}
}
}
折线图如下所示:现有如下疑问:
1.图正上方中文乱码,怎么解决?
2.横轴的年份各出现两次,怎么改为一次?
3.怎么把横轴的年份变为1 2 3 4 5……这样的时刻,单位为秒?
4.population1,population2,population3各出现两次,怎么改为一次,并且我要它们纵向排列
population1
population2
population3
并且显示在图的左上方(在坐标平面内)
欢迎各位大侠不吝惜赐教,感激不尽!
package com.yyh.jfreechart;import java.awt.Font;
import java.io.File;
import java.text.SimpleDateFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
public class TimeSeriesExample
{
public static void main(String[] args)
{
// 创建第一条时序线
TimeSeries pop1 = new TimeSeries("Population1", Day.class);
pop1.add(new Day(10, 1, 2001), 100);
pop1.add(new Day(10, 2, 2002), 150);
pop1.add(new Day(10, 3, 2003), 250);
pop1.add(new Day(10, 4, 2004), 275);
pop1.add(new Day(10, 5, 2005), 325);
pop1.add(new Day(10, 6, 2006), 425);
// 创建第二条时序线
TimeSeries pop2 = new TimeSeries("Population2", Day.class);
pop2.add(new Day(20, 1, 2001), 200);
pop2.add(new Day(20, 2, 2002), 250);
pop2.add(new Day(20, 3, 2003), 450);
pop2.add(new Day(20, 4, 2004), 475);
pop2.add(new Day(20, 5, 2005), 125);
pop2.add(new Day(20, 6, 2006), 150);
//创建第三条时序线
TimeSeries pop3 = new TimeSeries("Population3", Day.class);
pop3.add(new Day(20, 1, 2001), 300);
pop3.add(new Day(20, 2, 2002), 300);
pop3.add(new Day(20, 3, 2003), 300);
pop3.add(new Day(20, 4, 2004), 300);
pop3.add(new Day(20, 5, 2005), 300);
pop3.add(new Day(20, 6, 2006), 300);
// 创建一个时序集合
TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(pop1);
dataset.addSeries(pop2);
dataset.addSeries(pop3);
// 产生时序图
// JFreeChart chart = ChartFactory.createTimeSeriesChart("标题","x轴标志","y轴标志","设置数据",是否显示图形,是否进行提示,是否配置报表存放地址);
JFreeChart chart = ChartFactory.createTimeSeriesChart("人口统计时序图","Date","Population",dataset,true,true,false);
// 设置日期显示格式
XYPlot plot = chart.getXYPlot();
DateAxis axis = (DateAxis) plot.getDomainAxis();
//axis.setDateFormatOverride(new SimpleDateFormat("MM-dd-yyyy"));
axis.setDateFormatOverride(new SimpleDateFormat("yyyy"));
axis.setLabelFont(new Font("黑体", Font.TRUETYPE_FONT, 12)); try{
// 创建图形显示面板
ChartFrame cf = new ChartFrame("时序图",chart);
cf.pack();
// 设置图片大小
cf.setSize(500,300);
// 设置图形可见
cf.setVisible(true);
// // 保存图片到指定文件夹
ChartUtilities.saveChartAsJPEG(new File("E:\\TimeSeriesChart1.jpg"), chart, 500, 300);
} catch (Exception e){
System.err.println("Problem occurred creating chart.");
}
}
}
折线图如下所示:现有如下疑问:
1.图正上方中文乱码,怎么解决?
2.横轴的年份各出现两次,怎么改为一次?
3.怎么把横轴的年份变为1 2 3 4 5……这样的时刻,单位为秒?
4.population1,population2,population3各出现两次,怎么改为一次,并且我要它们纵向排列
population1
population2
population3
并且显示在图的左上方(在坐标平面内)
欢迎各位大侠不吝惜赐教,感激不尽!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货