chart fx for java을 이용한charting...

60
Chart FX for JAVA을 이용한 Charting 프로그램 Chart FX for JAVA을 이용한 Charting 프로그램 ㈜예쓰월드(YESSData.com) 소프트웨어 사업부 기술지원 팀 2005. 02. 02

Upload: duongthuan

Post on 06-Feb-2018

253 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Chart FX for JAVA을이용한 Charting 프로그램Chart FX for JAVA을이용한 Charting 프로그램

㈜예쓰월드(YESSData.com)소프트웨어 사업부기술지원 팀

2005. 02. 02

Page 2: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

AgendaAgenda

회사소개

Chart FX for JAVA 소개

Chart FX for JAVA의 API (데모)

그외

Contact Us

Page 3: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

YESSWorldYESSWorld개발용 소프트웨어를 전문적으로 공급

Chart FX for JAVA : 대표적인 자바 차트 컴포넌트

Resin : 가장 빠른 Java WAS

JProbe : Java 포퍼먼스 튜닝

JClass : 그리드, 리포팅 …

InstallAnywhere : 자바 인스톨러

FormulaOne for JAVA : 자바용 Excel 클라이언트 컴포넌트

ExcelWriter : 자바용 Excel 서버 컴포넌트

IP*Works : 자바 통신 컴포넌트

JSuite : 자바 GUI 컴포넌트

SourceInsight : 자바 소스 분석 및 개발

MCP/MSP 파트너로서 MS기반 솔루션 및 제품 판매

Page 4: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Software FXSoftware FX

1993년 설립

재사용 가능한 시각적인 컴포넌트에 대한 요구가 시장에서 나타남에 따라 설립됨

설립 후 현재까지 전 세계 Chart 컴포넌트 분야를 선도하고 있습니다.

가장 강력하고, 사용하기 쉬운, 데이터 표현솔루션을 개발자에게 제공한다는 철학을 가진 기업입니다.

Page 5: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

자매제품자매제품Chart FX for .NET

Chart FX Internet

Chart FX Client Server

Chart FX Delphi

Pocket Chart FX

Chart FX Studio

Chart FX ExtensionChart FX Financial

Chart FX Statistical

Chart FX OLAP

Chart FX Real-Time

Page 6: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Chart FX for JAVA 소 개Chart FX for JAVA 소 개

Page 7: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

JAVA 버전 특징JAVA 버전 특징

기존 COM버전 보다 유연하다.다중 축의 개수 제한이 없음

강화된 UI – 그라디언트, 안티앨리어싱…

강력한 마법사 기능과 편리한 도움말

다양한 출력형태Image, SVG, Flash, .NET Control

순수한 JAVA 컴포넌트

Page 8: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

제 품 구 성제 품 구 성Server Component (JSP/Servlet)

Client Component (.NET Control)

Designer (Templates)

DesignerDesignerDesigner

Page 9: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Chart FX for JAVA의 도움말Chart FX for JAVA의 도움말

Page 10: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Chart FX for JAVA의 APIChart FX for JAVA의 API

Page 11: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Chart 생성하기Chart 생성하기

import SoftwareFX.ChartFX.*;

ChartServer chart1 = new ChartServer(application,request,response );

chart1.getHtmlTag("400","240","PNG");

Page 12: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Gallery TypesGallery Types

Axis ChartsLines, Bar, Curve, Scatter, Area, Step, OpenHiLowClose …

Non-axisPie, Radar, Polar, Doughnut…

Chart와 Series의 Gallery 속성 사용chart1.setGallery(Gallery.GANTT);

series.setGallery(Gallery.LINES);

Page 13: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

GanttGantt

chart1.openData(COD.VALUES, 1, 9);chart1.openData(COD.INI_VALUES, 1, 9);chart1.setIniValue(0, 0,5);chart1.setValue(0, 0,25);chart1.setLegend(0,"Act. 1");:

Page 14: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

BubbleBubble

2가지 값을 동시에 표현Y값, 풍선의 크기

chart1.setValue(0, j, dY) //Bubble Y Value

chart1.setValue(1, j, dSize) //Bubble Size

XY BubbleX, Y, 풍선의 크기

chart1.setValue(0, j, dY) //Bubble Y Value

chart1.setXValue(0, j, dX) //Bubble X Value

chart1.setValue(1, j, dSize) //Bubble Size

Page 15: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

BubbleBubble

Page 16: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

DoughnutDoughnut

chart1.setGallery(Gallery.DOUGHNUT);chart1.setChart3D(true);chart1.setPointLabels(true);chart1.getPoint(2).setSeparateSlice((short) 35);

Page 17: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

XY Plot - ScatterXY Plot - Scatter

chart1.setGallery(Gallery.SCATTER);chart1.openData(COD.VALUES, 2, 10);chart1.openData(COD.XVALUES, 2, 10);chart1.setXValue(0, 0, -0.86);chart1.setValue(0, 0, -0.41);

Page 18: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

OpenHiLowCloseOpenHiLowClose

TextProvider txtProvider = new TextProvider(application.getRealPath("/data/openhighlowclosedata.txt")); //TextProvider에 대한 설명

chart1.setDataType(0, DataType.LABEL);chart1.setDataType(1, DataType.VALUE);chart1.setDataType(2, DataType.VALUE);chart1.setDataType(3, DataType.VALUE);chart1.setDataType(4, DataType.VALUE);chart1.setDataSource(txtProvider);

chart1.setGallery(Gallery.OPENHILOWCLOSE);chart1.setVolume((short) 100);

Page 19: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

OpenHiLowCloseOpenHiLowClose

Page 20: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Surface & ContourSurface & Contour

Series와 Point, 값을 이용하여 표현 (more)

Page 21: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Surface & ContourSurface & Contour

Page 22: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

CombinationCombination

전체 설정chart1.setGallery(Gallery.AREA);시리즈별 설정chart1.getSeries(0).setGallery(Gallery.AREA);SeriesAttributes series = chart1.getSeries(1); series.setGallery(Gallery.LINES); series.setMarkerShape(MarkerShape.NONE); series = chart1.getSeries(2); series.setGallery(Gallery.LINES);

Page 23: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

데이터 전달데이터 전달

다양한 형태의 데이터 지원API

Database

Text

XML

Arrays & Collections

Crosstab (아직 불가)

Page 24: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

API를 이용한 전달API를 이용한 전달

setValue속성을 이용하여 전달chart1.setValue(1,2,40);Value속성은 OpenData와 CloseData 메서드 사이에서사용

Points의 개수를 모를때chart1.openData(COD.VALUES, 1, COD.UNKNOWN);

축 재설정(Axis.) setAutoScale(boolean value)(Aixs.) resetScale()

Hidden Pointschart1.setValue(0, 3, Chart.HIDDEN);

기존값의 변경chart1.openData(COD.VALUES, COD.UNCHANGE

, COD.UNCHANGE);

Page 25: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

DatabaseDatabase

JDBCDataProvider provider = new JDBCDataProvider(ResultSet);

chart1.setDataType(0,DataType.LABEL);chart1.setDataType(1,DataType.VALUE);chart1.setDataType(2,DataType.VALUE);

chart1.getAxisX().getLabelsFormat().setFormat(AxisFormat.DATE);

chart1.setDataSource(provider);

Page 26: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Text FilesText Files

//Create TextProviderTextProvider txtProvider = new TextProvider(application.ge

tRealPath("/data/rangebanddata.txt"));

//Setting chart1 collumns data typechart1.setDataType(0, DataType.LABEL);chart1.setDataType(1, DataType.NOT_USED);chart1.setDataType(2, DataType.NOT_USED);chart1.setDataType(3, DataType.INIVALUE); chart1.setDataType(4, DataType.VALUE);chart1.setDataType(5, DataType.VALUE);chart1.setDataType(6, DataType.VALUE);

chart1.setDataSource(txtProvider);

Page 27: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

XMLXML

XMLProvider sfxXml = new XMLProvider();

sfxXml.load(XML파일위치);

chart1.setDataSource(sfxXml);

Page 28: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Collection & ArraysCollection & Arrays

ListProvider lstProvider = new ListProvider();

lstProvider.add(labels);

lstProvider.add(arrVals[0]);

lstProvider.add(arrVals[1]);

chart1.setDataSource(lstProvider);

Page 29: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Axis HandlingAxis Handling

Scaling

Formatting

Labeling

Scrolling

Multiple Axes

Gridlines & Tickmarks

Page 30: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

ScalingScaling

/*****************************************/chart1.getAxisY().setAutoScale(false);/*****************************************/

boolean b2ND;if(b2ND=true){

//데이타 변동chart1.openData(COD.VALUES, COD.UNCHANGE, COD.UNCHANGE);

chart1.setValue(0, 5, 150);chart1.setValue(1, 10, 250);

chart1.closeData(COD.VALUES);}

/*****************************************/boolean bRecalc;if(bRecalc=true)

chart1.recalcScale();/*****************************************/

Page 31: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

LogBaseLogBase

Page 32: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

FormattingFormatting

Axis axis=chart1.getAxisY();

Pre-Definedaxis.getLabelsFormat().setFormat(AxisFormat.SCIENTIFIC);

User-Definedaxis.getLabelsFormat().setCustomFormat("mm/dd/yy");

"$#,##0;($#,##0)“txtProvider.setDateFormat("M/d/yyyy");

Logarithmic Scalesaxis.setLogBase((short) 10);

Manipulating Dates and TimesAxis axis = chart1.getAxisX();axis.getLabelsFormat().setFormat(AxisFormat.TIME);axis.setMin(0);axis.setMax(2);axis.setStep(1/24);

Page 33: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

LabelingLabeling

//the interval between 2 consecutive tickmarks is equal to 10chart1.getAxisY().setLabelValue((short) 10);

//assign each labelfor (int i=0;i<=9;i++)

chart1.getAxisY().setLabel(i, "레이블 " + i);

//set the text color of the y axis labelschart1.getAxisY().setTextColor(new Color(255,0,0));

//set the font properties for the y axis labelschart1.getAxisY().setFont( new Font("굴림", Font.BOLD, 14));

chart1.getAxisY().setLabelAngle((short) 30);

Page 34: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

ScrollingScrolling

chart1.setScrollable(true);

chart1.getAxisX().setScrollView(20,60);

chart1.getAxisY().setScrollView(30, 70);

chart1.getHtmlTag("450","280",".NET")

Page 35: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Multiple AxesMultiple Axes

SeriesAttributes series1 = chart1.getSeries(1);

series1.setYAxis(YAxis.SECONDARY);

Axis axis = chart1.getAxis((int) YAxis.SECONDARY);

axis.setVisible(true);

Axis axis2 = chart1.getAxis(3);

axis2.setVisible(true);

Page 36: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Gridlines & TickmarksGridlines & Tickmarks

axis.setStep((short) 20);

axis.setGridlines(true);

axis.getGrid().setColor(new Color(135, 206, 250));

axis.setMinorStep((short) 5);

axis.getMinorGrid().setColor(new Color(255, 0, 0));

axis.setMinorTickMark(TickMark.OUTSIDE);

axis.setStyle(axis.getStyle() | AxisStyle.INTERLACED);

Page 37: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

포인트별 속성 주기포인트별 속성 주기

Basic

chart1.getPoint(0,3).setColor(Color.red);

Advanced

for (int i=0;i<totSeries;i++)

for (int j=0;j<totValues;j++)

if (chart1.getValue(i,j) >= myLimit[i][0]) {

chart1.getPoint(i, j).setColor(myColor[i][0]);

}else if(chart1.getValue(i,j) < myLimit[i][1]){

chart1.getPoint(i, j).setColor(myColor[i][1]);

}

Page 38: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Import & ExportImport & Export

Export

chart1.exportChart(FileFormat.BINARY, Filename/Stream);

FileMask

chart1.setFileMask(chart1.getFileMask()

| FileMask.ALL ^ FileMask.TITLES);

Import

chart1.importChart(FileFormat.BINARY, 바이너리 파일명);

Import from Designer

chart1.importChart(FileFormat.XML, XML 위치));

Page 39: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Legends & LabelsLegends & Labels

Series Legend

Point Legend

User Legend

Marker Labels

Custom Marker Labels

Double Labeling

SerLeg & SerKey

Page 40: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Series LegendSeries Legend// In this case we are hardcoding the labels// but it would be the same if the labels are retrieved from the database

chart1.setSerLeg(0, "ChartFX");chart1.setSerLeg(1, "ReportFX");

// Show the Series Legend Window

chart1.setSerLegBox(true);

chart1.getSerLegBoxObj().setToolBorder(ToolBorder.EXTERNAL);

//Emboss, Embed, SolidLines, Colonial, ArchThick, Open, SolidRivet, Slide

ImageBorder myBorder = new ImageBorder(ImageBorderType.EMBOSS);

chart1.setBorderObject(myBorder);

Page 41: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Point LegendPoint Legendchart1.setLegendBox(true);chart1.getLegendBoxObj().setDocked(

Docked.LEFT);chart1.getLegendBoxObj().setAlignment(

ToolAlignment.FAR);chart1.setLegend(0,"January");chart1.setLegend(1,"February");chart1.setLegend(2,"March");chart1.setLegend(3,"April");chart1.setLegend(4,"May");

chart1.setDataEditor(true);chart1.getDataEditorObj().setDocked(

Docked.BOTTOM);

Page 42: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

User LegendUser Legend

// Configure user legend for special pointsString strLegend[]={"Too High", "Normal", "Too Low"};UserLegendBoxItem userLegItem;

for (int i=0;i<3;i++) {userLegItem =

chart1.getUserLegendBoxObj().getItem(i);userLegItem.setLabel(strLegend[i]);userLegItem.setColor(myColor[0][i]);userLegItem.setMarkerShape(MarkerShape.RECT);userLegItem.setBorderEffect(BorderEffect.NONE);

}chart1.setUserLegendBox(true);

Page 43: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Legend Box 크기 고정Legend Box 크기 고정

설명 취소 : 나중에 나옴

Page 44: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Marker LabelsMarker Labels

SeriesAttributes series = chart1.getSeries(0);series.setPointLabels(true);series.setPointLabelAngle((short) 90);series.setPointLabelAlign(

LabelAlign.RIGHT | LabelAlign.VCENTER);series.setColor(new Color(255, 255, 0));

Page 45: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Custom Marker LabelsCustom Marker Labels

chart1.setPointLabelMask(

"I represent the " + "%p" + "%%"

+ "₩n" + "of " + "%t" + " on " + "%l");

chart1.setPointLabels(true);

chart1.setLegend(0, "Jan");

chart1.setLegend(1, "Feb");

chart1.setLegend(2, "Mar");

Page 46: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Double LabelingDouble Labeling

Axis axis3 = chart1.getAxis(3);axis3.setYAxis(false);axis3.setMin((short) 0);axis3.setMax((short) 9);axis3.setStyle(axis3.getStyle() | AxisStyle.CENTERED);axis3.setLabel(3, "Group 1");axis3.setLabel(5, "Group 2");axis3.setLabel(9, "Group 3");axis3.getLine().setColor(new Color(255, 255, 0)); axis3.getGrid().setColor(new Color(255, 255, 0)); axis3.setCustomSteps(new double[] { 3, 2, 4 });

Page 47: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

SerLeg & SerKeySerLeg & SerKey

chart1.openData(COD.VALUES,5,6);for (int i=0;i<5;i++)

for (int j=0;j<6;j++) { chart1.setValue(i, j, Math.random() * 100); chart1.setSerLeg(i, "S" + (i+1)); chart1.setSerKey(i, "S" + (i+1));

}chart1.closeData(COD.VALUES);

chart1.setCluster(true);chart1.setChart3D(true);chart1.setSerLegBox(true);

Page 48: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

그 외 팁그 외 팁

Page 49: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Headless EnvironmentHeadless EnvironmentJDK 1.4, XVFB, Exceed on Demand

Page 50: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Cross-Hair & ClientScriptCross-Hair & ClientScript

Cross-Hair마우스를 차트에 대고 왼쪽 버튼을 누르면, 마무스 초점을 중심으로 십자형의 중심선이 나타나서, 값의 비교를 비교적 쉽게 한다.

관련 메소드 (Live / Edit)(Chart.)setCrossHairs(boolean value)

(Chart.)setTypeEx(int value)

(Chart.)isCrossHairs()

ClientScript (JavaScript / VBScript)Chart FX for .NET 예제를 참조하는 것이 좋다.

Page 51: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Gantt-StackingGantt-Stacking

40일 (Live / Edit)

분기별 (Live / Edit)

Page 52: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

범례박스 크기의 고정범례박스 크기의 고정범례박스의 크기는 입력되는 범례의 폰트크기, 길이등에 의해서 자동으로 조절된다.미관상의 이유로, 범례박스의 크기를 고정시켜야할 경우도 있을 수 있다.관련 메소드 (Live / Edit)

(UserLegendBox.)setWidth(int);//Docked.LEFT 또는 Docked.RIGHT인 경우에만

(UserLegendBox.)setHeight(int);//Docked.TOP 또는 Docked.BOTTOM인 경우에만

(UserLegendBox.)setDocked(int);(UserLegendBox.)setAutoSize(boolean);

//default : false

6.0.1734 / 6.0.1605 / 6.0.1465

Page 53: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

각종 폰트 퍼짐 현상각종 폰트 퍼짐 현상타이틀용 폰트가 시스템과 관계없이 퍼지는 현상이 발생하는데, 이는 Anti-Aliasing 때문이다.관련 메소드 (Live / Edit)

(Chart.)setSmoothFlags(int value)주의사항글씨의 퍼짐 현상을 개선하기 위해 Anti-Aliasing 기능을 제거한경우, 라인차트의 라인의 계단현상이 심화될 수 있다.

Page 54: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

한글 폰트 설정법한글 폰트 설정법

한글 폰트 등록시스템 폰트로 등록 (TTF / TTC)

JVM 폰트로 등록 ($JAVA_HOME/jre/lib/fonts)

폰트 테스트 (Live / Edit)

Page 55: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

.NET Framework 다운로드.NET Framework 다운로드

1. Microsoft 사이트에 접속한다.

2. 좌측 메뉴의 Product Resources에서 ‘Downloads’를 선택한다.

3. 좌측 메뉴의 Download Categories에서 ‘Development Resources’를 선택한다.

4. Search for a Download의 Product/Technology (Optional)에서‘.NET’을 선택하고, Keywords(Optional)에 Framework를 입력하고Go를 누른다.

5. 검색된 항목중 ‘.NET Framework Version x.x Redistributable Package’를 선택한다.

6. 다운로드 받기전에, Change Language에서 Korean으로 변경후 Go를 누른다.

7. 한글 페이지로 변경이 되었다면, ‘.NET Framework 버전 x.x 재배포가능 패키지’로 되어있을 것이다. 이제 오른쪽에 위치한 ‘다운로드’버튼을 눌러서 다운로드 한다.

Page 56: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

.NET Framework 설정.NET Framework 설정

설정은 한글 Win XP Pro 기준으로시작→설정→제어판→관리 도구→Microsoft .NET Framework 1.1 Microsoft .NET Framework 1.1 구성구성에서 할 수 있다.기본적으로 HTTP : 80 포트는 무리없이 수행되지만, 다른 포트를 사용시에는 별도의 설정이 필요하다.만약 80외의 포트를 사용할 수 밖에 없다면, 클라이언트 마다.. 런타임 보안 정책→컴퓨터→코드 그룹→All_Code→자식 코드 그룹 추가을 통해서 타켓 URL/도메인과 포트를 추가해주고, ‘FullTrust’로 설정해 준다.

Page 57: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

버전별 .NET Ctrl 분석버전별 .NET Ctrl 분석

6.0.1734.18542 (Patch / Live / Edit)정상 작동(.NET Ctrl 버전은 6.0.1605와 동일)

6.0.1605.22277 (Patch / Live / Edit)정상 작동 버전

6.0.1465.26138 (Patch / Live / Edit)정상 작동 버전

Page 58: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Designer in JDK 1.3Designer in JDK 1.3

관련조항If you are running J2SE 1.3, you will need to download and install Java API for XML Processing (JAXP). This may require Downloading the Java Web Services Developer Pack 1.x from http://java.sun.com. 하지만, JDK 1.3용 JAXP는 존재하지 않는다.

테스트 결과only JDK 1.3 : 실패

JDK 1.4 : 성공

JDK 1.3 + JAXP : 성공-Xbootclasspath/a:jaxp.jar

jaxp.jar를 –classpath에 추가하면 실패

jaxp.jar는 JDK 1.4가 설치된 머신에서 따로 추출한다.

Page 59: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

차트를 작게 만들때 유의점차트를 작게 만들때 유의점

차트가 작게 만들때, 실제 차트 표현 영역을예상 외로 작아진다.

예 Live / Edit

차트의 크기가 작아질때에 보더가 보이면답답해 보일 수 있다.

예 Live / Editchart1.setBorderObject(new DefaultBorder(0));

Page 60: Chart FX for JAVA을 이용한Charting 프로그램community.chartfxkorea.com/BbsData/Club/20065/JP/CFXJavaSeminar… · import SoftwareFX.ChartFX.*; ChartServerchart1 = new ChartServer(application,request,response);

Contact UsContact Us

E-Mail기술지원 http://www.yessdata.com 의

Club 또는 기술지원영업 [email protected]

전화영업 02)567-9169

홈 페이지국내총판 http://www.yessdata.com제작사 http://www.softwarefx.com제작사 기술정보

http://support.softwarefx.com/cfxjava