Groovyでグラフを作成する 4)日付表示を“日-月”から“月/日”に変更する リベンジ編
ローソクチャートだがJava+JFreeChartの場合はsetDateFormatOverrideメソッドで
日付の形式ができるようだ。
groovyとJFreeChartでローソク足グラフで取引量を非表示にする
jfc = ChartFactory.createCandlestickChart( "株価推移", "日付", "株価", dohlcds, false) // 時間のフォーマット jfc.getPlot().getDomainAxis().setDateFormatOverride( new java.text.SimpleDateFormat("MM/dd") )
JFreeChartを直接ではなく、buidlerを使用してるので、
その辺のクラスを確認する。
builderで作成したクラスは何?
println chart.getClass()
class com.thecoderscorner.groovychart.chart.TimeseriesChart
これだとだめだな。
ChartPanelの第一パラメータで指定しているクラスは?
println chart.chart.getClass()
class org.jfree.chart.JFreeChart
おっ、ここからいけそうだ。
getPlot()して取得できるクラスは?
println chart.chart.getPlot().getClass()
class org.jfree.chart.plot.XYPlot
getDomainAxisメソッドもあるな。
getDomainAxis()して取得できるクラスは?
println chart.chart.getPlot().getDomainAxis().getClass()
class org.jfree.chart.axis.DateAxis
setDateFormatOverride
メソッドを持ってる。
setDateFormatOverride(java.text.DateFormat formatter)
Sets the date format override.
これでいけそうだ。
ソース
import com.thecoderscorner.groovychart.chart.ChartBuilder import groovy.swing.SwingBuilder import java.awt.BorderLayout import java.awt.Dimension import org.jfree.chart.ChartFactory import org.jfree.chart.ChartPanel import org.jfree.chart.JFreeChart; import org.jfree.data.time.Day import org.jfree.chart.StandardChartTheme ChartBuilder builder = new ChartBuilder(); chart = builder.timeserieschart(title:'2010年9月の平均気温', timeAxisLabel:'日付', valueAxisLabel:'気温(℃)', legend:true, tooltips:false, urls:false ) { timeSeriesCollection { timeSeries(name:'気温', timePeriodClass:'org.jfree.data.time.Day') { add(period:new Day(1,9,2010), value:27.4) add(period:new Day(2,9,2010), value:27.5) add(period:new Day(3,9,2010), value:29.1) add(period:new Day(4,9,2010), value:28.7) add(period:new Day(5,9,2010), value:27.9) add(period:new Day(6,9,2010), value:29.3) add(period:new Day(7,9,2010), value:29.2) add(period:new Day(8,9,2010), value:25.3) add(period:new Day(9,9,2010), value:24.4) add(period:new Day(10,9,2010), value:24.1) add(period:new Day(11,9,2010), value:27.7) add(period:new Day(12,9,2010), value:27.9) add(period:new Day(13,9,2010), value:29.5) add(period:new Day(14,9,2010), value:25.1) add(period:new Day(15,9,2010), value:22.3) add(period:new Day(16,9,2010), value:20.9) add(period:new Day(17,9,2010), value:22.7) add(period:new Day(18,9,2010), value:24.2) add(period:new Day(19,9,2010), value:24.5) add(period:new Day(20,9,2010), value:24.8) add(period:new Day(21,9,2010), value:25.5) add(period:new Day(22,9,2010), value:28.3) add(period:new Day(23,9,2010), value:21.2) add(period:new Day(24,9,2010), value:18.5) add(period:new Day(25,9,2010), value:19.9) add(period:new Day(26,9,2010), value:18.9) add(period:new Day(27,9,2010), value:18.0) add(period:new Day(28,9,2010), value:19.7) add(period:new Day(29,9,2010), value:21.7) add(period:new Day(30,9,2010), value:19.4) } } } ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme()) chart.chart.getPlot().getDomainAxis().setDateFormatOverride( new java.text.SimpleDateFormat("MM/dd")) def chartPanel = new ChartPanel(chart.chart, false); chartPanel.setPreferredSize(new Dimension(0, 40)); chartPanel.setMouseZoomable(true, false); builder.chartAsPNG(new FileOutputStream('.\\chart\\ChartSampleTemperature5.png'), 800, 400); SwingBuilder swing = new SwingBuilder(); def frame = swing.frame( title:'This is a Frame', location:[100,100], size:[800,400], defaultCloseOperation:javax.swing.WindowConstants.EXIT_ON_CLOSE); frame.getContentPane().setLayout(new BorderLayout()); frame.getContentPane().add( chartPanel, java.awt.BorderLayout.CENTER); frame.setVisible(true)
結果
[D:\workspace\groovy_SandBox]groovy ChartSampleTemperature5.groovy [D:\workspace\groovy_SandBox]
よし成功!!
実行環境
- OS:Windows XP
- Groovy Version: 1.6.5
- JVM: 1.6.0_12
Groovyでグラフを作成する 4)日付表示を“日-月”から“月/日”に変更する 失敗編
Groovyでグラフを作成する 3)日本語は使えるか?
Groovyでグラフを作成する 2)動作確認編
Groovyでグラフを作成する 1)インストール編
Groovyで文字列を行に分ける
Groovyで文字列を段落に分ける
Groovyの@grabってなんぞや?
GroovyでWindowsのスクリーンセーバーの待ち時間を変更する
Groovyで特定文字(空白類文字)を含まない部分の長さを調べる その3(完結編)
Groovyでdef関数からdef関数が呼び出せないのか?
Groovyの詳細についてはJavadocと以下の書籍を参考にしている。
Groovyイン・アクション
posted with amazlet
Groovyイン・アクションを読むならあった方が便利かな。
薄い本は「ほんたった」で立ててる