S2J's Studio.

jFree画图入门

字数统计: 657阅读时长: 2 min
2019/04/27 Share

由于离散数学的实践安排,需要学着用java编写程序进行图形的输出,题目如下:

    考虑x(t)=-2tsin(t2),0≤t≤8,从0开始,以△t=0.01、0.02、0.04、0.08、0.1、0.25、0.5、1为间隔,分别绘制x(t)的离散时间信号。每个离散样本点用’*’显示,程序采用JAVA或C语言实现(可采用第三方库函数)。对于每个△t,观察连续时间信号信息损失的情况,编制程序。

观察题目要求

  题目需要在不同的Δt时表现不同的函数图像,首先要画出基本函数图形。

图形的绘制

    先要会用第三方包jfree,安装地址
安装并且导入到在eclipse中建立的项目后便可以开始着手编程了。

jfree的一些接口方法的使用

1
2
3
4
5
6
7
8
9
XYSeries series = new XYSeries("xySeries");//创建XYSeries对象
for (double x = 0; x <8;) //写出函数定义域
{
double y = ((-2)*x*Math.sin(x*x));//写出函数式
series.add(x, y); //使用add方法加入到新建对象series中
x=x+t; //结尾加上△t的变化范围
}
XYSeriesCollection dataset = new XYSeriesCollection(); //新建XYSeriesCollection对象
dataset.addSeries(series);// 把之前series对象使用方法加入到dataset中

图像显示设置

1
2
3
4
5
6
7
8
9
10
11
12
13
JFreeChart chart = ChartFactory.createXYLineChart(
"Δt="+t, // 图像名
"x", // x 轴名
"x(t)", // y 轴名
dataset // data
); //新建对象 调用构造函数
XYPlot plot = (XYPlot)chart.getPlot();
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
renderer.setSeriesLinesVisible(0, false);// 设置连线不可见
plot.setRenderer(renderer); ////将修改后的属性值保存到图中
ChartFrame frame = new ChartFrame("my picture", chart);
frame.pack();//设置窗体最佳大小
frame.setVisible(true);//设置可见

图像如下

补充

    按照题目可设置简单的输入,方便形成不同数值的Δt所构成的图形。

参考API

    XYSeries类,它代表了在所述形式的零个或多个数据项(x,y)的序列。默认情况下,该系列中的数据项都按升序排列由x值,并重复允许的x值。无论是排序和复制缺省值可以在构造函数中被改变。 Y值可以表示为空值代表缺失值。

    XYSeriesCollection类有类似父类AbstractIntervelDataset,AbstractXYDatset,AbstractSeriesDataset和AbstractDataset。一些在这个类中的方法属于这个类的父类。

    具体API请见:JFreeChart参考API

构造方法 构造方法内容
XYSeries(java.lang.Comparable key) 该构造函数创建一个新的空系列。
XYSeriesCollection(XYSeries xyseries) 它构建了一个数据集,并用一个系列的填充
CATALOG
  1. 1. 观察题目要求
  2. 2. 补充
  3. 3. 参考API