001 /*
002 * Copyright (c) 2009 The openGion Project.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
013 * either express or implied. See the License for the specific language
014 * governing permissions and limitations under the License.
015 */
016 package org.opengion.hayabusa.io;
017
018 import org.opengion.hayabusa.common.HybsSystem;
019 import org.opengion.hayabusa.common.HybsSystemException;
020 import org.opengion.fukurou.util.StringUtil;
021
022 import java.util.List;
023 import java.awt.Color;
024 import java.text.SimpleDateFormat;
025
026 import org.jfree.ui.RectangleEdge;
027 import org.jfree.chart.JFreeChart;
028 import org.jfree.chart.plot.Plot;
029 import org.jfree.chart.plot.PlotOrientation;
030 import org.jfree.chart.plot.CategoryPlot;
031 import org.jfree.chart.renderer.category.CategoryItemRenderer;
032 import org.jfree.data.category.CategoryDataset;
033 import org.jfree.chart.axis.CategoryAxis;
034 import org.jfree.chart.axis.CategoryLabelPositions;
035 import org.jfree.chart.axis.CategoryAnchor;
036 import org.jfree.chart.axis.DateAxis; // 5.6.1.0 (2013/02/01)
037 import org.jfree.chart.plot.DatasetRenderingOrder;
038 import org.jfree.chart.plot.CategoryMarker;
039
040 /**
041 * ChartCreate は、JFreeChart オブジェクトを構築するクラスですã?
042 * è¤?•°の ChartDataset オブジェクトを合æ?することもã?ここで行ってã�?�¾すã?
043 * グラフã?種類ã?、ChartPlot_XXX クラスで設定してã�?�¾すã?
044 * ここでは、簡易的にオブジェクトを構築できるように、チャートタイプã?æŒ?®šによってã€?
045 * å�?¨®作æ?するオブジェクトをåˆ?‚Š替えてã�?�¾すã?
046 *
047 * @version 0.9.0 2007/06/21
048 * @author Kazuhiko Hasegawa
049 * @since JDK1.1,
050 */
051 public class ChartCreate {
052
053 private String title = null; // タイトル
054 private String chartType = null; // チャートã?種é¡?
055 private String domainLabel = null; // チャートã?共通横軸のラベル
056 private boolean showLegend = true; // 凡ä¾?の表示可否
057 private RectangleEdge rectEdge= RectangleEdge.BOTTOM; // 凡例ã?表示ç®?‰€
058 private PlotOrientation plotOri = PlotOrientation.VERTICAL; // チャートã?軸表示方å�?
059 private Color chartBackColor = null; // 背景色の設å®?
060 private Color plotBackColor = null; // 描画領域の設å®?
061 private int rotationLabel = 0; // 横軸ラベルの傾ã�?1:180度 ã€?:90度 ã€?:60度 ã€?:45度 ã€?:30度 ?¥?¥?¥ )
062 // CategoryAxis系は、rotationLabel。ValueAxis系(NumberAxis,DateAxis)は、useVerticalLabels で、ラベルの表示向きを指定しますã?
063 private boolean useVerticalLabels = false; // 5.6.4.3 (2013/05/24) 横軸ラベルの表示向き(横書ã�?false/縦書ã�?true)
064 private String domainMarker = null; // 横軸のマã?カーライン
065 private boolean useDomainLabel = true; // 横軸ラベルの表示有無
066 private boolean useMarkerLabel = true; // マã?カーライン時ã?æ–?—有無
067 private int seriesPikup = -1; // ピックアãƒ??するシリーズ番号
068 private HybsURLGenerator urlGen = null; // クリãƒ?‚«ブル・マッãƒ?
069 // 4.0.2.0 (2007/12/20)
070 private String categoryMargin = null; // カãƒ?‚´リマã?ジン(0.0??.0)
071 private String lowerMargin = null; // 下方マã?ジン(0.0??.0)
072 private String upperMargin = null; // 上方マã?ジン(0.0??.0)
073 private boolean isDebug = false; // ãƒ?ƒ�ãƒ?‚°フラグ
074 private boolean useDomainLine = false; // 4.0.3.0 (2008/01/07) 横軸のグリãƒ?ƒ‰表示有無(垂直ç·?
075 private Color domainLineColor = null; // 4.0.3.0 (2008/01/07) 横軸のグリãƒ?ƒ‰線ã?色
076 private boolean useRangeLine = true; // 4.0.3.0 (2008/01/07) 縦軸のグリãƒ?ƒ‰表示有無(水平ç·?
077 private Color rangeLineColor = null; // 4.0.3.0 (2008/01/07) 縦軸のグリãƒ?ƒ‰線ã?色
078 private int categorySkip = 1; // 4.0.3.0 (2008/01/07) 横軸ラベルをスキãƒ??する間隔
079 private int categoryCutNo = -1; // 4.1.1.0 (2008/02/04) 横軸ラベルのæ–?—位置æŒ?®šã?キーブレイク
080 private int rangeSkip = 1; // 4.1.1.0 (2008/02/04) 縦軸のグリãƒ?ƒ‰をスキãƒ??する間隔
081 private boolean useToolTip = false; // 4.3.1.0 (2008/08/09) ãƒ??ルチップスの利用
082
083 private CategoryAnchor categoryAnchor = null; // 4.1.1.0 (2008/02/14) 横軸のグリãƒ?ƒ‰(垂直ç·?の書きå?し位置(START,MIDDLE,END)
084
085 private List<ChartDataset> chartDataset = null; // チャートã?ãƒ??タ属æ?管ç�?‚ªブジェクトã?リスãƒ?
086
087 private String dateAxisFormat = "MM/dd"; // 5.6.1.0 (2013/02/01) Time,XYTime Polt関係ã?時間軸を表すå?合ã?フォーマッãƒ?
088
089
090 /**
091 * JFreeChart オブジェクトを作æ?しますã?
092 *
093 * å†?ƒ¨çš?�«は、ChartPlot インターフェースに基づã�?�Ÿ Plot を構築するクラスã‚?
094 * 呼び出して、JFreeChart の引数に設定しますã?
095 * å�?¨®属æ?の設定も行いますã?
096 *
097 * @return JFreeChartオブジェクãƒ?
098 */
099 public JFreeChart getChart() {
100
101 ChartPlot chPlot = ChartFactory.newChartPlot( chartType );
102
103 Plot plot = chPlot.getPlot( this );
104
105 // 描画領域の設å®?
106 if( plotBackColor != null ) {
107 plot.setBackgroundPaint( plotBackColor );
108 }
109
110 JFreeChart chart = new JFreeChart( title, JFreeChart.DEFAULT_TITLE_FONT, plot, showLegend );
111
112 if( showLegend ) {
113 chart.getLegend().setPosition( rectEdge );
114 }
115
116 // 背景色の設å®?
117 if( chartBackColor != null ) {
118 chart.setBackgroundPaint( chartBackColor );
119 }
120
121 // 以降ã?処ç�?�§は、変更イベントが発行されるã€?
122 if( categoryAnchor != null && plot instanceof CategoryPlot ) {
123 ((CategoryPlot)plot).setDomainGridlinePosition( categoryAnchor ) ;
124 }
125
126 // 以降ã?処ç�?�§は、変更イベントが発行されるã€?
127 // 5.1.8.0 (2010/07/01) 実質çš?�«使用されてã�?�ªã�??で、削除
128 // if( plot instanceof HybsCategoryPlot ) {
129 // ((HybsCategoryPlot)plot).setNotify( true ) ;
130 // }
131
132 return chart;
133 }
134
135 /**
136 * JFreeChart オブジェクトを変更しますã?
137 *
138 * すでに作æ?済みの JFreeChart に対してã€?
139 * シリーズのピックアãƒ??(seriesPikup) のみ、変更しますã?
140 * 使用するのは、引数の JFreeChart と seriesPikup 属æ?値のみですã?
141 *
142 * @og.rev 3.8.9.2 (2007/07/28) シリーズæŒ?®š時の色、シェープ対å¿?
143 *
144 * @param chart JFreeChartオブジェクãƒ?
145 * @param serNo seriesPikup 属æ?値
146 *
147 * @return JFreeChartオブジェクãƒ?
148 */
149 public static JFreeChart modifying( final JFreeChart chart,final int serNo ) {
150
151 CategoryPlot plot = chart.getCategoryPlot();
152
153 if( plot instanceof HybsCategoryPlot ) {
154 // 以降ã?処ç�?�§は、変更イベントã?発行されなã�??
155 // 5.1.8.0 (2010/07/01) 実質çš?�«使用されてã�?�ªã�??で、削除
156 // ((HybsCategoryPlot)plot).setNotify( false ) ;
157 ((HybsCategoryPlot)plot).setSeriesPikup( serNo ) ;
158 }
159
160 CategoryDataset dtset = plot.getDataset();
161 int rowCnt = dtset.getRowCount(); // Series の個数
162
163 CategoryItemRenderer rend = plot.getRenderer();
164
165 if( serNo >= 0 && serNo < rowCnt ) {
166 rend.setBasePaint( Color.CYAN );
167 rend.setSeriesPaint( serNo, Color.RED );
168 }
169
170 // 以降ã?処ç�?�§は、変更イベントが発行されるã€?
171 // 5.1.8.0 (2010/07/01) 実質çš?�«使用されてã�?�ªã�??で、削除
172 // if( plot instanceof HybsCategoryPlot ) {
173 // ((HybsCategoryPlot)plot).setNotify( true ) ;
174 // }
175
176 return chart ;
177 }
178
179 /**
180 * CategoryPlotオブジェクトを返しますã?
181 *
182 * ChartCreate オブジェクãƒ?自åˆ??身)に設定されたå�?¨®属æ?をå?にã€?
183 * CategoryPlotオブジェクトを構築しますã?
184 * å¿?¦�な属æ?設定ã?、済んでã�?‚‹状態ですã?
185 * ここでは、serNo、categoryAxis、plotOrientation、useDomainLineã€?
186 * domainLineColor、useRangeLine 、RangeLineColor 、rangeSkip ã€?
187 * domainMarker を設定しておきますã?
188 *
189 * @og.rev 4.1.1.0 (2008/02/04) 新規追åŠ?
190 *
191 * @return å¿?¦�な属æ?を設定済みのCategoryPlotオブジェクãƒ?
192 */
193 protected HybsCategoryPlot makeCategoryPlot() {
194 HybsCategoryPlot cPlot = new HybsCategoryPlot( seriesPikup );
195
196 cPlot.setOrientation( plotOri );
197 cPlot.setDatasetRenderingOrder( DatasetRenderingOrder.FORWARD );
198
199 // ドメイン(横軸)に対する、グリãƒ?ƒ‰ライン(垂直ç·?のæŒ?®?
200 cPlot.setDomainGridlinesVisible( useDomainLine );
201 if( domainLineColor != null ) { cPlot.setDomainGridlinePaint( domainLineColor ); }
202
203 // レンジ(縦軸)に対する、グリãƒ?ƒ‰ライン(水平ç·?のæŒ?®?
204 cPlot.setRangeGridlinesVisible( useRangeLine );
205 if( rangeLineColor != null ) { cPlot.setRangeGridlinePaint( rangeLineColor ); }
206
207 // 4.1.1.0 (2008/02/04) 縦軸のグリãƒ?ƒ‰ç·?水平ç·?をスキãƒ??する間隔のæŒ?®?
208 cPlot.setRangeSkip( rangeSkip );
209
210 // 横軸ドメインマã?カーの設å®?縦ライン)
211 if( domainMarker != null ) {
212 CategoryMarker catMk = new CategoryMarker( domainMarker );
213 catMk.setDrawAsLine( true );
214 if( useMarkerLabel ) {
215 catMk.setLabel( domainMarker );
216 }
217 cPlot.addDomainMarker( catMk );
218 }
219
220 return cPlot ;
221 }
222
223 /**
224 * CategoryAxisオブジェクトを返しますã?
225 *
226 * ChartCreate オブジェクãƒ?自åˆ??身)に設定されたå�?¨®属æ?をå?にã€?
227 * CategoryAxisオブジェクトを構築しますã?
228 * å¿?¦�な属æ?設定ã?、済んでã�?‚‹状態ですã?
229 * ここでは、domainLabel、categoryMargin、lowerMargin、upperMarginã€?
230 * useDomainLabel、rotationLabel を設定しておきますã?
231 *
232 * @og.rev 4.1.1.0 (2008/02/04) 横軸ラベルのæ–?—位置æŒ?®šã?キーブレイク追åŠ?categoryCutNo)
233 *
234 * @return å¿?¦�な属æ?を設定済みの CategoryAxisオブジェクãƒ?
235 */
236 protected CategoryAxis makeCategoryAxis() {
237 CategoryAxis categoryAxis = new HybsCategoryAxis(
238 domainLabel,categorySkip,categoryCutNo
239 );
240
241 // カãƒ?‚´リマã?ジン(0.0??.0)を指定しますã?
242 if( categoryMargin != null ) {
243 double ctMargin = Double.parseDouble( categoryMargin );
244 categoryAxis.setCategoryMargin( ctMargin ) ; // double margin
245 }
246
247 // 下方マã?ジン(0.0??.0)を指定しますã?
248 if( lowerMargin != null ) {
249 double lwMargin = Double.parseDouble( lowerMargin );
250 categoryAxis.setLowerMargin( lwMargin ) ; // double margin
251 }
252
253 // 上方マã?ジン(0.0??.0)を指定しますã?
254 if( upperMargin != null ) {
255 double upMargin = Double.parseDouble( upperMargin );
256 categoryAxis.setUpperMargin( upMargin ) ; // double margin
257 }
258
259 // チャートã?カãƒ?‚´リーラベルの方向をæŒ?®šしますã?
260 if( rotationLabel > 0 ) {
261 categoryAxis.setCategoryLabelPositions(
262 CategoryLabelPositions.createUpRotationLabelPositions(
263 Math.PI / rotationLabel ));
264 }
265 else if( rotationLabel < 0 ) {
266 categoryAxis.setCategoryLabelPositions(
267 CategoryLabelPositions.createDownRotationLabelPositions(
268 Math.PI / -rotationLabel ));
269 }
270
271 // 横軸ラベルの表示有無を返しますã?
272 categoryAxis.setVisible( useDomainLabel ); // ドメインラベルの表示有無
273
274 if( isDebug ) {
275 System.out.println( "CategoryMargin="+categoryAxis.getCategoryMargin());
276 System.out.println( "LowerMargin="+categoryAxis.getLowerMargin());
277 System.out.println( "UpperMargin="+categoryAxis.getUpperMargin());
278 }
279
280 return categoryAxis ;
281 }
282
283 /**
284 * チャートã?ãƒ??タ属æ?管ç�?‚ªブジェクトã?リストを設定しますã?
285 *
286 * ChartDataset オブジェクトã?、å?部チャートã?個ã?の属æ?を管ç�?�—てã�?�¾すã?
287 * こã?オブジェクãƒ?は、グラフã?合æ?に使用できるように、å?部にそれぞれの Plot ã‚?
288 * renderer に対応する情報を持ってã�?�¾すã?
289 * これらを、è¤?•°管ç�?�™るときに、List 管ç�?�—てã�?�¾すã?で、そのList をセãƒ?ƒˆしますã?
290 * JFreeChart には、このè¤?•°のChartDataset から、それぞれã? Plot と Dataset ã‚?
291 * é ?¬¡、追åŠ?�—てã�?��å¿?¦�がありますã?そã?処ç�??、ChartPlot インターフェースã‚?
292 * 継承した、サブクラスで実際に行われますã?
293 *
294 * @param datasetList チャートã?ãƒ??タ属æ?管ç�??リスãƒ?
295 */
296 public void setDatasetList( final List<ChartDataset> datasetList ) {
297 chartDataset = datasetList;
298
299 if( chartDataset != null ) {
300 ChartDataset firstChData = chartDataset.get(0);
301 chartType = firstChData.getChartType();
302 }
303 }
304
305 /**
306 * チャートã?ãƒ??タ属æ?管ç�?‚ªブジェクトã?リストを返しますã?
307 *
308 * @return チャートã?ãƒ??タ属æ?管ç�?‚ªブジェクトã?リスãƒ?
309 * @see #setDatasetList( List )
310 */
311 protected List<ChartDataset> getDatasetList() { return chartDataset; }
312
313 /**
314 * チャートã?タイトルを設定しますã?
315 *
316 * @param chTitle チャートã?タイトル
317 */
318 public void setTitle( final String chTitle ) {
319 title = chTitle;
320 }
321
322 /**
323 * チャートã?共通横軸のラベルを設定しますã?
324 *
325 * @param domLabel チャートã?共通横軸のラベル
326 */
327 public void setDomainLabel( final String domLabel ) {
328 domainLabel = domLabel;
329 }
330
331 /**
332 * チャートã?共通横軸のラベルを返しますã?
333 *
334 * @return チャートã?共通横軸のラベル
335 */
336 protected String getDomainLabel() { return domainLabel; }
337
338 /**
339 * 凡ä¾?の表示可否を設定しますã?
340 *
341 * @param showLeg 凡ä¾?の表示可否
342 */
343 public void setShowLegend( final boolean showLeg ) {
344 showLegend = showLeg;
345 }
346
347 /**
348 * 凡例ã?表示ç®?‰€を設定しまã�?TOP、BOTTOM、RIGHT、LEFT)ã€?
349 *
350 * 表示ç®?‰€は、org.jfree.ui.RectangleEdge クラスの設定å?を使用しますã?
351 * æŒ?®šできるのは、TOP、BOTTOM、RIGHT、LEFT で、各æ–?—ã?頭ä¸?–‡字で
352 * 判定してますã?つまりã?T,B,R,L で、判定を行い、それ以外ã?エラーになりますã?
353 *
354 * @param edge 凡例ã?表示ç®?‰€(TOP、BOTTOM、RIGHT、LEFT)
355 */
356 public void setRectangleEdge( final String edge ) {
357 if( edge != null && edge.length() > 0 ) {
358 char ope = edge.charAt(0);
359 switch( ope ) {
360 case 'T' : rectEdge = RectangleEdge.TOP; break;
361 case 'B' : rectEdge = RectangleEdge.BOTTOM;break;
362 case 'R' : rectEdge = RectangleEdge.RIGHT; break;
363 case 'L' : rectEdge = RectangleEdge.LEFT; break;
364 default :
365 String errMsg = "æŒ?®šã?パラメータは適用できませんã€?" + edge + "]"
366 + HybsSystem.CR
367 + "TOP,BOTTOM,RIGHT,LEFT の中から、指定してくださいã€? ;
368 throw new HybsSystemException( errMsg );
369 }
370 }
371 }
372
373 /**
374 * チャートã?軸表示方向を設定しまã�?VERTICAL、HORIZONTAL)ã€?
375 *
376 * 軸表示方向ã?、org.jfree.chart.plot.PlotOrientation クラスの設定å?を使用しますã?
377 * æŒ?®šできるのは、VERTICAL、HORIZONTALで、各æ–?—ã?頭ä¸?–‡字で
378 * 判定してますã?つまりã?V,H で、判定を行い、それ以外ã?エラーになりますã?
379 *
380 * @param orientation 凡例ã?表示ç®?‰€(VERTICAL、HORIZONTAL)
381 */
382 public void setPlotOrientation( final String orientation ) {
383 if( orientation != null && orientation.length() > 0 ) {
384 char ope = orientation.charAt(0);
385 switch( ope ) {
386 case 'V' : plotOri = PlotOrientation.VERTICAL; break;
387 case 'H' : plotOri = PlotOrientation.HORIZONTAL;break;
388 default :
389 String errMsg = "æŒ?®šã?パラメータは適用できませんã€?" + orientation + "]"
390 + HybsSystem.CR
391 + "VERTICAL,HORIZONTAL の中から、指定してくださいã€? ;
392 throw new HybsSystemException( errMsg );
393 }
394 }
395 }
396
397 /**
398 * チャートã?軸表示方向を返しますã?
399 *
400 * org.jfree.chart.plot.PlotOrientation クラスの設定å?を使用しますã?
401 *
402 * @return チャートã?軸表示方å�?VERTICAL、HORIZONTAL)
403 */
404 protected PlotOrientation getPlotOrientation() { return plotOri; }
405
406 /**
407 * チャートã?背景色を指定しますã?
408 *
409 * æŒ?®š文字å?は、java.awt.Color クラスのstatic フィールド名でæŒ?®šしますã?
410 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
411 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できますã?
412 * またã?#XXXXXX形式ã?16bitRGB表è¨?でも指定可能ですã?
413 *
414 * @param chBackClr チャートã?背景色
415 * @see java.awt.Color#BLACK
416 */
417 public void setChartBackColor( final String chBackClr ) {
418 if( chBackClr != null && chBackClr.length() > 0 ) {
419 chartBackColor = StringUtil.getColorInstance( chBackClr );
420 }
421 }
422
423 /**
424 * チャートã?描画領域の色を指定しますã?
425 *
426 * æŒ?®š文字å?は、java.awt.Color クラスのstatic フィールド名でæŒ?®šしますã?
427 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
428 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) が指定できますã?
429 * またã?#XXXXXX形式ã?16bitRGB表è¨?でも指定可能ですã?
430 *
431 * @param plBackClr チャートã?描画領域色
432 * @see java.awt.Color#BLACK
433 */
434 public void setPlotBackColor( final String plBackClr ) {
435 if( plBackClr != null && plBackClr.length() > 0 ) {
436 plotBackColor = StringUtil.getColorInstance( plBackClr );
437 }
438 }
439
440 /**
441 * チャートã?カãƒ?‚´リーラベルの方向をæŒ?®šしますã?
442 *
443 * これは、CategoryAxis 系の横軸ラベルに対して、表示方向をæŒ?®šしますã?
444 * ValueAxis系(NumberAxis,DateAxis)は、setUseVerticalLabels( boolean ) で
445 * true:縦/false:横 のみæŒ?®š可能ですã?
446 *
447 * 方向ã?、上方向に対してã€?PI / æŒ?¤º数) で求まるå?に設定しますã?
448 * こã?æŒ?¤º数に相当するå?を設定しますã?
449 * 1:180度 ã€?:90度 ã€?:60度 ã€?:45度 ã€?:30度 ?¥?¥?¥
450 * マイナスは、下方向に回転させますã?
451 * 0 を指定したå?合ã?、何も設定しませんã€?初期設定ã?まま)
452 *
453 * @param rotLabel カãƒ?‚´リーラベルの方å�?
454 * @see #setUseVerticalLabels( boolean )
455 */
456 public void setRotationLabel( final int rotLabel ) {
457 rotationLabel = rotLabel;
458 }
459
460 /**
461 * ラベルの表示向きを縦にするかどã�?�‹[false/true]を指定しまã�?初期値:false)ã€?
462 *
463 * これは、ValueAxis系(NumberAxis,DateAxis) 系の横軸ラベルに対して、表示方向を
464 * true:縦/false:横で、指定しますã?
465 * true にæŒ?®šしたå?合で、かつ、rotationLabel が未æŒ?®?=0)の場合ã?ã€?:90度 も設定しますã?
466 *
467 * ChartCreate の rotationLabel は、角度を指定できましたがã?NumberAxis,DateAxis ではã€?
468 * 縦にするかどã�?�‹のæŒ?®šしかできませんã€?
469 * ここでは、true を指定するとラベルは、縦書きになりますã?
470 * 初期値は、false(横書ã�?ですã?
471 *
472 * @og.rev 5.6.4.3 (2013/05/24) 新規追åŠ?
473 *
474 * @param useVLavels ラベルの表示向き [false:横書ã�?true:縦書き]
475 * @see #setRotationLabel( int )
476 */
477 public void setUseVerticalLabels( final boolean useVLavels ) {
478 useVerticalLabels = useVLavels;
479
480 // useVerticalLabels=true で、rotationLabel ã‚?2:90度 に設定しておきますã?
481 if( useVerticalLabels && rotationLabel == 0 ) { rotationLabel = 2; }
482 }
483
484 /**
485 * チャートã?カãƒ?‚´リーラベルの方向を取得しますã?
486 *
487 * 方向ã?、上方向に対してã€?PI / æŒ?¤º数) で求まるå?に設定しますã?
488 * こã?æŒ?¤º数に相当するå?を設定しますã?
489 * 1:180度 ã€?:90度 ã€?:60度 ã€?:45度 ã€?:30度 ?¥?¥?¥
490 * マイナスは、した方向に回転させますã?
491 * 0 を指定したå?合ã?、何も設定しませんã€?初期設定ã?まま)
492 *
493 * @return カãƒ?‚´リーラベルの方å�?
494 * @see #setRotationLabel( int )
495 */
496 protected int getRotationLabel() { return rotationLabel; }
497
498 /**
499 * チャートã?横軸の値(ドメイン)に合è?する位置にマã?カーラインを設定しますã?
500 *
501 * こã?属æ?には、ã?ーカーラインを設定するå?を記述しますã?
502 *
503 * @param marker ドメインのマã?カーライン
504 */
505 public void setDomainMarker( final String marker ) {
506 if( marker != null && marker.length() > 0 ) {
507 domainMarker = marker;
508 }
509 }
510
511 /**
512 * 横軸ラベルのラベルを表示するかどã�?�‹[true/false]を指定しまã�?初期値:true)ã€?
513 *
514 * ドメイン(横軸)がã?多数存在する場合ã?ドメインラベルが見えにくくなりますã?
515 * そã?ようなケースで、横軸のラベルそã?もã?を表示しなã�??合に、false ã‚?
516 * 設定しますã?
517 * 初期値は、表示する(true)ですã?
518 *
519 * @param flag 横軸ラベルの表示有無 [true:表示する/false:表示しない]
520 */
521 public void setUseDomainLabel( final boolean flag ) {
522 useDomainLabel = flag ;
523 }
524
525 /**
526 * 横軸ラベルの表示有無を返しますã?
527 *
528 * @return boolean横軸ラベルの表示有無(true:表示する/false:表示しなã�?
529 */
530 protected boolean isUseDomainLabel() { return useDomainLabel; }
531
532 /**
533 * マã?カーラインに、その設定å?を表示するかどã�?�‹[true/false]を指定しまã�?初期値:true)ã€?
534 *
535 * ドメイン(横軸)がã?多数存在する場合ã?ドメインラベルが見えなã�??合がありますã?
536 * そã?ようなケースで、見たã�??にマã?カーラインを設定し、その横に、ドメインラベル
537 * を表示する事で、ピãƒ?‚¯アãƒ??してã�?‚‹軸の値を容易に知ることが可能ですã?
538 * 初期値は、表示する(true)ですã?
539 *
540 * @param flag マã?カーラインの設定å?表示 [true:表示する/false:表示しない]
541 */
542 public void setUseMarkerLabel( final boolean flag ) {
543 useMarkerLabel = flag ;
544 }
545
546 /**
547 * è¤?•°シリーズのピックアãƒ??を行う場合ã?シリーズ番号を指定しますã?
548 *
549 * è¤?•°シリーズ(検索時にè¤?•°é ?›®を同時に検索する場å�?では、チャート上に
550 * è¤?•°のグラフが表示されますが、その中のä¸?�¤をピãƒ?‚¯アãƒ??する場合にã€?
551 * シリーズ番号を指定しますã?
552 * シリーズ番号はã€? から始まる数字ですã?
553 * ここでは、ピãƒ?‚¯アãƒ??されたシリーズは、赤色で表示されますã?
554 * それ以外ã?、グレー色での表示になりますã?
555 * (※ 本来は、ChartDataset に持つべき属æ?ですã?)
556 *
557 * @param serPikup シリーズ番号
558 */
559 public void setSeriesPikup( final int serPikup ) {
560 seriesPikup = serPikup;
561 }
562
563 /**
564 * 横軸ラベルをスキãƒ??する間隔を指定しますã?
565 *
566 * 横軸ラベル(カãƒ?‚´リラベル表示)する際に、スキãƒ??する間隔を指定しますã?
567 * "1" (初期値)ではã€?¼‘つづつ表示(つまりã?すべて表示する)しますã?
568 * "2" とするとã€?¼‘つおきにã€?3" とするとã€?¼’つおきに表示しますã?
569 * 初期値はã€?1" (すべて表示)ですã?
570 * なおã?先é?から表示を開始しますã?
571 *
572 * 注意:これとは別に、ラベル先é?に "_" を付けたå?合ã?、ラベルを表示しませんã€?
573 * またã?categoryCutNo が指定された場合ã?、categorySkip は使用されませんã€?
574 *
575 * @param cateSkip ラベルをスキãƒ??する間隔を指å®?
576 * @see #setCategoryCutNo( int )
577 */
578 public void setCategorySkip( final int cateSkip ) {
579 categorySkip = cateSkip;
580 }
581
582 /**
583 * 横軸ラベルのæ–?—位置æŒ?®šã?キーブレイクを指定しますã?
584 *
585 * @og.rev 4.1.1.0 (2008/02/04) 新規追åŠ?
586 *
587 * 横軸ラベル(カãƒ?‚´リラベル表示)する際に、ラベルの先é?から、このæŒ?®š文字数ã�?�‘
588 * カãƒ?ƒˆして、表示しますã?
589 * そã?際ã?前回作æ?したカãƒ?ƒˆラベルと、同ä¸?ƒ©ベルの場合ã?、表示しませんã€?
590 * 例えば、データは、年月日で、年と月ã?み(先é??–文å?を指定するとã€?
591 * 日のãƒ??タは、ラベルが表示されませんã€?
592 * æŒ?®šされる数字ã?ã€?¼‘以上ã?整数としてくださいã€?
593 * 初期値は、すべて表示ですã?
594 *
595 * 注意:これとは別に、ラベル先é?に "_" を付けたå?合ã?、ラベルを表示しませんã€?
596 * またã?categoryCutNo が指定された場合ã?、categorySkip は使用されませんã€?
597 *
598 * @param cateCutNo キーブレイク位置
599 * @see #setCategorySkip( int )
600 */
601 public void setCategoryCutNo( final int cateCutNo ) {
602 if( cateCutNo > 0 ) {
603 categoryCutNo = cateCutNo;
604 }
605 }
606
607 /**
608 * è¤?•°シリーズのピックアãƒ??を行う場合ã?シリーズ番号を取得しますã?
609 *
610 * 方向ã?、上方向に対してã€?PI / æŒ?¤º数) で求まるå?に設定しますã?
611 * こã?æŒ?¤º数に相当するå?を設定しますã?
612 * 0 を指定したå?合ã?、何も設定しませんã€?初期設定ã?まま)
613 * (※ 本来は、ChartDataset に持つべき属æ?ですã?)
614 *
615 * @return シリーズ番号
616 * @see #setSeriesPikup( int )
617 */
618 protected int getSeriesPikup() { return seriesPikup; }
619
620 /**
621 * 縦軸のグリãƒ?ƒ‰ç·?水平ç·?をスキãƒ??する間隔を指定しますã?
622 *
623 * 縦軸のグリãƒ?ƒ‰線を表示する際に、スキãƒ??する間隔を指定しますã?
624 * 通常は、ラベルと同じã�?�‘のグリãƒ?ƒ‰線が掛かれますが、ラベルよりã‚?
625 * 少なã�?•°のグリãƒ?ƒ‰ç·?例えばã€?¼’つおき)をå?すå?合に、å?を設定しますã?
626 * "1" (初期値)ではã€?¼‘つづつ表示(つまりã?すべて表示する)しますã?
627 * "2" とするとã€?¼‘つおきにã€?3" とするとã€?¼’つおきに表示しますã?
628 * 初期値はã€?1" (すべて表示)ですã?
629 * なおã?先é?から表示を開始しますã?
630 *
631 * @og.rev 4.1.1.0 (2008/02/04) 新規追åŠ?
632 *
633 * @param rngSkip 縦軸のグリãƒ?ƒ‰ç·?水平ç·?をスキãƒ??する間隔
634 */
635 public void setRangeSkip( final int rngSkip ) {
636 rangeSkip = rngSkip;
637 }
638
639 /**
640 * クリãƒ?‚«ブル・マップ用URLを指定しますã?
641 *
642 * 画像に、クリãƒ?‚«ブル・マップを作æ?する場合ã?、URL を指定しますã?
643 * これは、画像上にエリアæŒ?®šでリンク引数を作æ?することが可能ですã?
644 * URL 自身はã€? 付きで固定å?の引数をé?結することが可能ですã?
645 * クリãƒ?‚¯したエリアのカãƒ?‚´リã‚?‚¤ンãƒ?ƒƒクスの値(引数)は、è?動的に
646 * 設定されますã?(æŒ?®šしなã�??合ã?チャートによって異なりまã�?
647 * <pre>
648 * ・Pie ?šcategory、pieIndex
649 * ・XY ?šseries、item
650 * ・Category ?šseries、category
651 * </pre>
652 * こã?引数の URL の名称を変更したã�??合ã?、URL に続けて、カンãƒ?,) でã€?
653 * 名称を記述してくださいã€?
654 * 例:link.jsp,BLOCK
655 *
656 * @param imageMapUrl クリãƒ?‚«ブル・マップ用URL
657 */
658 public void setImageMapUrl( final String imageMapUrl ) {
659 if( imageMapUrl != null ) {
660 urlGen = new HybsURLGenerator( imageMapUrl );
661 }
662 }
663
664 /**
665 * クリãƒ?‚«ブル・マップ用URLを取得しますã?
666 *
667 * @return クリãƒ?‚«ブル・マップ用URL
668 * @see #setImageMapUrl( String )
669 */
670 protected HybsURLGenerator getURLGenerator() { return urlGen; }
671
672 /**
673 * ãƒ??ルチップス利用(true)利用しなã�?false)のフラグを取得しますã?
674 *
675 * @og.rev 4.3.1.0 (2008/08/09) 新規追åŠ?
676 * @og.rev 4.9.9.9 (2009/08/07) メソãƒ?ƒ‰名変更
677 *
678 * @return ãƒ??ルチップス利用(true)利用しなã�?false)のフラグ
679 * @see #setUseToolTip( boolean )
680 */
681 // protected boolean getUseToolTip() { return useToolTip; }
682 protected boolean isUseToolTip() { return useToolTip; }
683
684 /**
685 * カãƒ?‚´リマã?ジン(0.0??.0)を指定しますã?
686 *
687 * カãƒ?‚´リ(グラフã?横軸に相å½?の表示間隔(マã?ジン)の比率を指定しますã?
688 * こã?比率はã€?¼?ではなくã?数å?double)での設定になりますã?
689 * 何もæŒ?®šしなã�??合ã?、デフォルトで自動調整されますã?
690 *
691 * @og.rev 4.0.2.0 (2007/12/20) 新規追åŠ?
692 *
693 * @param margin カãƒ?‚´リマã?ジン(0.0??.0)
694 */
695 public void setCategoryMargin( final String margin ) {
696 categoryMargin = margin;
697 }
698
699 /**
700 * 下方マã?ジン(0.0??.0)を指定しますã?
701 *
702 * カãƒ?‚´リ(グラフã?横軸に相å½?の下方側(左側)のマã?ジンの比率を指定しますã?
703 * こã?比率はã€?¼?ではなくã?数å?double)での設定になりますã?
704 * 何もæŒ?®šしなã�??合ã?、デフォルトで自動調整されますã?
705 *
706 * @og.rev 4.0.2.0 (2007/12/20) 新規追åŠ?
707 *
708 * @param margin 下方マã?ジン(0.0??.0)
709 */
710 public void setLowerMargin( final String margin ) {
711 lowerMargin = margin;
712 }
713
714 /**
715 * 上方マã?ジン(0.0??.0)を指定しますã?
716 *
717 * カãƒ?‚´リ(グラフã?横軸に相å½?の上方側(右側)のマã?ジンの比率を指定しますã?
718 * こã?比率はã€?¼?ではなくã?数å?double)での設定になりますã?
719 * 何もæŒ?®šしなã�??合ã?、デフォルトで自動調整されますã?
720 *
721 * @og.rev 4.0.2.0 (2007/12/20) 新規追åŠ?
722 *
723 * @param margin 上方マã?ジン(0.0??.0)
724 */
725 public void setUpperMargin( final String margin ) {
726 upperMargin = margin;
727 }
728
729 /**
730 * 横軸のグリãƒ?ƒ‰表示有無(垂直ç·?を指定しまã�?初期値:false)ã€?
731 *
732 * ドメイン(横軸)に対する、グリãƒ?ƒ‰ラインを表示するかどã�?�‹æŒ?®šしますã?
733 *
734 * 何もæŒ?®šしなã�??合ã?、表示しませんã€?false)
735 *
736 * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
737 *
738 * @param useLine 横軸のグリãƒ?ƒ‰表示有無(垂直ç·?
739 */
740 public void setUseDomainLine( final boolean useLine ) {
741 useDomainLine = useLine;
742 }
743
744 /**
745 * 横軸のグリãƒ?ƒ‰線ã?色を指定しますã?
746 *
747 * ドメイン(横軸)に対する、グリãƒ?ƒ‰ラインの表示色を指定しますã?
748 * 何もæŒ?®šしなã�??合ã?、デフォルトで自動設定されますã?
749 *
750 * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
751 *
752 * @param color 横軸のグリãƒ?ƒ‰線ã?色
753 */
754 public void setDomainLineColor( final String color ) {
755 if( color != null ) {
756 domainLineColor = StringUtil.getColorInstance( color );
757 }
758 }
759
760 /**
761 * 縦軸のグリãƒ?ƒ‰表示有無(水平ç·?を指定しまã�?初期値:true)ã€?
762 *
763 * レンジ(縦軸)に対する、グリãƒ?ƒ‰ラインを表示するかどã�?�‹æŒ?®šしますã?
764 *
765 * 何もæŒ?®šしなã�??合ã?、表示しませんã€?false)
766 *
767 * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
768 *
769 * @param useLine 横軸のグリãƒ?ƒ‰表示有無(垂直ç·?
770 */
771 public void setUseRangeLine( final boolean useLine ) {
772 useRangeLine = useLine;
773 }
774
775 /**
776 * ãƒ??ルチップスを利用(true)/利用しなã�?false)を指定しまã�?初期値:false)ã€?
777 *
778 * @og.rev 4.3.1.0 (2008/08/09) 新規追åŠ?
779 *
780 * @param toolTip ãƒ??ルチップスを利用(true)/利用しなã�?false)
781 */
782 public void setUseToolTip( final boolean toolTip ) {
783 useToolTip = toolTip;
784 }
785
786 /**
787 * 縦軸のグリãƒ?ƒ‰線ã?色を指定しますã?
788 *
789 * レンジ(縦軸)に対する、グリãƒ?ƒ‰ラインの表示色を指定しますã?
790 * 何もæŒ?®šしなã�??合ã?、デフォルトで自動設定されますã?
791 *
792 * @og.rev 4.0.3.0 (2008/01/07) 新規追åŠ?
793 *
794 * @param color 縦軸のグリãƒ?ƒ‰線ã?色
795 */
796 public void setRangeLineColor( final String color ) {
797 if( color != null ) {
798 rangeLineColor = StringUtil.getColorInstance( color );
799 }
800 }
801
802 /**
803 * 横軸のグリãƒ?ƒ‰(垂直ç·?の書きå?し位置(START,MIDDLE,END)を指定しますã?
804 *
805 * 横軸のグリãƒ?ƒ‰(垂直ç·?をã?グラフã?どの位置に記述するかをæŒ?®šしますã?
806 * 具体的な値は、CategoryAnchor オブジェクトã?値になりますã?
807 * ここでは、文字å?で(START,MIDDLE,END)を指定しますã?(先é?ä¸?–‡字で判å®?
808 * 何もæŒ?®šしなã�??合ã?、デフォルãƒ?MIDDLE)ですã?
809 *
810 * @og.rev 4.1.1.0 (2008/02/14) 新規追åŠ?
811 *
812 * @param anchor 横軸のグリãƒ?ƒ‰(垂直ç·?の書きå?し位置(START,MIDDLE,END)
813 */
814 public void setCategoryAnchor( final String anchor ) {
815 if( anchor != null && anchor.length() > 0 ) {
816 char anc = anchor.charAt(0);
817 switch( anc ) {
818 case 'S' : categoryAnchor = CategoryAnchor.START; break;
819 case 'M' : categoryAnchor = CategoryAnchor.MIDDLE; break;
820 case 'E' : categoryAnchor = CategoryAnchor.END; break;
821 default :
822 String errMsg = "æŒ?®šã?Anchorは適用できませんã€?" + anchor + "]"
823 + HybsSystem.CR
824 + "START,MIDDLE,END の中から、指定してくださいã€? ;
825 throw new HybsSystemException( errMsg );
826 }
827 }
828 }
829
830 /**
831 * Time,XYTime Polt関係ã?時間軸を表すå?合ã?フォーマットをæŒ?®šしますã?
832 *
833 * TimeSeries 関連のãƒ??タを扱ã�??合ã?横軸の日付フォーマットをæŒ?®šしますã?
834 * 日付フォーマットã?、java.text.SimpleDateFormat で使われã‚?yyyy/MM/dd HH:mm:ss 表記ですã?
835 *
836 * 初期値はã€?MM/dd" ですã?
837 *
838 * @og.rev 5.6.1.0 (2013/02/01) 新規追åŠ?
839 *
840 * @param dtFormat Time,XYTime Polt関係ã?時間軸を表すå?合ã?フォーマッãƒ?
841 */
842 public void setDateAxisFormat( final String dtFormat ) {
843 if( dtFormat != null && dtFormat.length() > 0 ) {
844 dateAxisFormat = dtFormat;
845 }
846 }
847
848 /**
849 * Time,XYTime Polt関係ã?時間軸を表ã�?DateAxis オブジェクトを返しますã?
850 *
851 * こã?オブジェクトã?、domainLabel で名前付けされã�?DateAxis で、日付フォーマットã?ã€?
852 * dateAxisFormat で DateFormat ã‚?Override してã�?�¾すã?
853 * 初期フォーマットã?ã€?MM/dd" ですã?
854 *
855 * @og.rev 5.6.1.0 (2013/02/01) 新規追åŠ?
856 * @og.rev 5.6.4.3 (2013/05/24) 横軸ラベルを90度傾ける処ç�?‚’追åŠ?
857 *
858 * @return DateAxisオブジェクãƒ?Time,XYTime Polt関係ã?時間軸表現)
859 */
860 protected DateAxis getDateAxis() {
861 DateAxis daxis = new DateAxis( domainLabel );
862 daxis.setDateFormatOverride( new SimpleDateFormat( dateAxisFormat ) );
863
864 // 5.6.4.3 (2013/05/24) 時間関係ã?横軸は、rotationLabel ではなくã?useVerticalLabels を使ã�?�¾すã?
865 if( useVerticalLabels ) {
866 daxis.setVerticalTickLabels( useVerticalLabels );
867 }
868
869 return daxis;
870 }
871
872 /**
873 * ãƒ?ƒ�ãƒ?‚°フラグを指定しますã?
874 *
875 * true に設定すると、チャートã?状態を System.out.println しますã?
876 *
877 * @og.rev 4.0.2.0 (2007/12/20) 新規追åŠ?
878 *
879 * @param flag ãƒ?ƒ�ãƒ?‚°フラグ [true:ãƒ?ƒ�ãƒ?‚°/false:通常]
880 */
881 public void setDebug( final boolean flag ) {
882 isDebug = flag;
883 }
884 }