ChartDirector图形控件

    public void createChart(ChartViewer viewer, int index)
{

// 这是两组数据,X和Y会一一对应生成;多在多纵轴图中使用,横坐标点会自动调整。
double[] dataY0 = { 4.5, 5};
Date[] dataX0 = {
new GregorianCalendar(1999, 1, 1).getTime(), new GregorianCalendar(2000,
8, 6).getTime()
};

double[] dataY1 = {7, 6.5, 6, 5, 6.5, 7, 6, 5.5, 5,9,8,7,8};
Date[] dataX1 = {new GregorianCalendar(1999, 1, 1).getTime(),
new GregorianCalendar(1999, 6, 1).getTime(), new GregorianCalendar(1999,
11, 1).getTime(), new GregorianCalendar(1999, 11, 15).getTime(),
new GregorianCalendar(1999, 12, 9).getTime(), new GregorianCalendar(2000,
2, 3).getTime(), new GregorianCalendar(2000, 7, 13).getTime(),
new GregorianCalendar(2001, 4, 5).getTime(), new GregorianCalendar(2001,
8, 16).getTime(), new GregorianCalendar(2001,
10, 16).getTime(),new GregorianCalendar(2001,
12, 16).getTime(),new GregorianCalendar(2002,
2, 16).getTime(),new GregorianCalendar(2002,
4, 16).getTime()};
//这是单独的横坐标数据,横坐标会根据数据进行调整,Y轴会按照顺利一一对应。
Date[] dataX2 = {
new GregorianCalendar(1999, 1, 1).getTime(), new GregorianCalendar(1999, 4, 1).getTime(),
new GregorianCalendar(1999, 8, 9).getTime(), new GregorianCalendar(2000,1, 1).getTime(),
new GregorianCalendar(2000, 4, 1).getTime(),new GregorianCalendar(2001, 8, 1).getTime(),
};

//创建图形的大小为 500 x 270 pixels, with a pale blue
// (e0e0ff) background, black border, 1 pixel 3D border effect and rounded
XYChart c = new XYChart(700, 500, 0xe0e0ff, 0x000000, 1);
c.setRoundedFrame();

// 起点坐标是 (55, 60) ,图形大小是520 x 200 pixels, with white
c.setPlotArea(55, 60, 500, 300, 0xffffff, -1, -1, 0xcccccc, 0xcccccc);

// Add a legend box at (55, 32) (top of the chart) with horizontal layout.
// Use 9 pts Arial Bold font. Set the background and border color to
// Transparent.
c.addLegend(55, 32, false, "Arial Bold", 9).setBackground(Chart.Transparent);

// Add a title box to the chart using 15 pts Times Bold Italic font. The text
// is white (ffffff) on a deep blue (000088) background, with soft lighting
// effect from the right side.
c.addTitle("Long Term Interest Rates", "Times New Roman Bold Italic", 15,
0xffffff).setBackground(0x000088, -1, Chart.softLighting(Chart.Right));

// 左边的Y轴
c.yAxis().setTitle("value").setAlignment(Chart.TopLeft2);

// 右边的Y轴
c.yAxis2().setTitle("Load\n(Mbps)").setAlignment(Chart.TopRight2);
c.yAxis2().setColors(0x008000, 0x008000, 0x008000);

//左边距图形50的Y轴
Axis leftAxis = c.addAxis(Chart.Left, 50);
leftAxis.setTitle("Temp\n(C)").setAlignment(Chart.TopLeft2);
leftAxis.setColors(0x0000cc, 0x0000cc, 0x0000cc);

// 右边距图形50的Y轴
Axis rightAxis = c.addAxis(Chart.Right, 50);
rightAxis.setTitle("Error\n(%)").setAlignment(Chart.TopRight2);
rightAxis.setColors(0xcccccc, 0xffffff, 0xffffff);


//加载两组数据(XY是一一对应的,同时添加的)
LineLayer layer0 = c.addLineLayer(dataY0, 0xff0000, "Country AAA");
layer0.setXData(dataX0);
layer0.setLineWidth(1);

LineLayer layer1 = c.addLineLayer(dataY1, 0x0000ff, "Country BBB");
layer1.setXData(dataX1);
layer1.setLineWidth(2);
layer1.setUseYAxis(leftAxis);

// 横坐标步长
c.xAxis().setLabelStep(2);
// // 统一给横坐标设值
// c.xAxis().setLabels(dataX2);

// 横坐标的标题
c.xAxis().setTitle("Hour of Day");

// output the chart
viewer.setImage(c.makeImage());

//{x|mmm dd, yyyy}横坐标的时间格式化
viewer.setImageMap(c.getHTMLImageMap("clickable", "",
"title='{dataSetName} change to {value}% on {x|mmm dd, yyyy}'"));

}
public static void main(String[] args)
{
//Instantiate an instance of this demo module
DemoModule demo = new multiaxes();

//Create and set up the main window
JFrame frame = new JFrame(demo.toString());
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);} });
frame.getContentPane().setBackground(Color.white);

// Create the chart and put them in the content pane
ChartViewer viewer = new ChartViewer();
demo.createChart(viewer, 0);
frame.getContentPane().add(viewer);

// Display the window
frame.pack();
frame.setVisible(true);


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值