Groovyでグラフを作成する 4)日付表示を“日-月”から“月/日”に変更する 設定方法のバリエーション編
id:wamanからコメントをもらった
目盛りの表示を変えるには、渡すデータでなく、軸のプロパティを設定しないといけないかと。
GroovyChart での設定の仕方は分かりませんが、JFreeChart の Java API を Groovy で扱う場合、JFreeChart オブジェクトの chart に対してchart.plot.domainAxis.dateFormatOverride = new SimpleDateFormat(’MM月dd日’)
とすると ”09月30日” のように表示できます。 ちなみに、SimpleDateFormat は java.text パッケージのクラスです。
1. Groovyでグラフを作成する 4)日付表示を“日-月”から“月/日”に変更する リベンジ編で使った方法
chart.chart.getPlot().getDomainAxis().setDateFormatOverride( new java.text.SimpleDateFormat("MM/dd"))
2. id:wamanからコメントで教えてもらった方法
chart.chart.plot.domainAxis.dateFormatOverride = new java.text.SimpleDateFormat("MM/dd")
3. 合わせたような方法
chart.chart.plot.domainAxis.setDateFormatOverride( new java.text.SimpleDateFormat("MM/dd"))
Groovy的に適切かは分からないけど、今回の処理だと、設定を上書きするようなイメージなので、
3のメンバーアクセスでsetメソッドを使うのが、自分のイメージに近いかな。
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.plot.domainAxis.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\\ChartSampleTemperature7.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)
実行環境
- OS:Windows XP
- Groovy Version: 1.6.5
- JVM: 1.6.0_12
Groovyの詳細についてはJavadocと以下の書籍を参考にしている。
Groovyイン・アクション
posted with amazlet
Groovyイン・アクションを読むならあった方が便利かな。
薄い本は「ほんたった」で立ててる