倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

Dataset で分類する Chart あれこれ (3) : CategoryDataset と LineChart, LineChart3D

今回は、CategoryDataset を要求するチャートのうち、LineChartLineChart3D のサンプルを見ていきます。

CategoryDataset インスタンスの作成例

        def dataset = new DefaultCategoryDataset()

        def m = 'Mass'
        def r = 'Radius'
        def d = 'Distance from Sun'
        def mE = 59.74d    // 10^23 kg
        def rE = 12.8d    // 10^6 m (diameter)

        def planet = 'Mercury'
        dataset.addValue(3.3d/mE, m, planet)
        dataset.addValue(4.9d/rE, r, planet)
        dataset.addValue(0.39d, d, planet)

        planet = 'Venus'
        dataset.addValue(48.7d/mE, m, planet)
        dataset.addValue(12.1d/rE, r, planet)
        dataset.addValue(0.72d, d, planet)

        planet = 'Earth'
        dataset.addValue(59.7d/mE, m, planet)
        dataset.addValue(12.8d/rE, r, planet)
        dataset.addValue(1.0d, d, planet)

        planet = 'Mars'
        data.addValue(6.4d/mE, m, planet)
        data.addValue(6.8d/rE, r, planet)
        data.addValue(1.5d, d, planet)

        planet = 'Jupiter'
        dataset.addValue(1.90e4d/mE, m, planet)
        dataset.addValue(143.0d/rE, r, planet)
        dataset.addValue(5.2d, d, planet)

        planet = 'Saturn'
        dataset.addValue(5.69e3d/mE, m, planet)
        dataset.addValue(120.5d/rE, r, planet)
        dataset.addValue(9.5d, d, planet)

        planet = 'Uranus'
        data.addValue(868d/mE, m, planet)
        data.addValue(51.1d/rE, r, planet)
        data.addValue(19.2d, d, planet)

        planet = 'Neptune'
        dataset.addValue(1.02e3d/mE, m, planet)
        dataset.addValue(49.6d/rE, r, planet)
        dataset.addValue(30.0d, d, planet)
  • データはwikipedia:太陽系を参考にしています。 ただし、データ自体、どの程度信頼できるかは分かりません*1
  • addValue() メソッドの第1引数は数値なので他の引数と区別が付きますが、第2、第3の引数はどちらが何処に反映されるのかに注意。

Chart のサンプル


以下の例で createXxxxChart() メソッドに渡している PlotOrientation の定数は DomainAxis (x軸、横軸)、RangeAxis (y軸、縦軸)に何をあてるかを指定します。 指定できる定数は

  • PlotOrientation.VERTICAL
  • PlotOrientation.HORIZONTAL

の2つです。 これらは、互いに縦軸と横軸が入れ替わったチャートが表示されます。

LineChart

ChartFactory.createLineChart('Line Chart', 'Planet', 'Ratio to Earth', data, PlotOrientation.VERTICAL, true, true, true)

  • 縦軸を対数軸に変更していますが、これには別途設定が必要です。

LineChart3D

ChartFactory.createLineChart3D('Line Chart 3D', 'Planet', 'Ratio to Earth', data, PlotOrientation.VERTICAL, true, true, true)

  • 縦軸を対数軸に変更していますが、これには別途設定が必要です。

*1:Wikipedia の英語バージョンを見ると所々データが違う箇所がありました。