課題 (06:キャンバス)
作業について
今回の課題は以下のパッケージに作成してください。
パッケージの名前 |
---|
j1.lesson06 |
作成するクラスの名前は問題ごとに指示があります。下記を参照してください
課題の提出方法については下記を参照してください。
また、別のコンピューター上に移動する際には、下記を参考にプログラムを持ち帰ってください。
新しい内容
今回、キャンバスに関する新しい内容はありません。
問題
作成するクラスの名前 |
---|
PlotChartS2 |
下記のプログラムを書き換えて、2009年の気象情報を(気象庁)3か月ごとのグラフにしてキャンバスに描画してください。
package j1.lesson06; import gpjava.Canvas; public class PlotChartS2 { public static void main(String[] args) { new PlotChartS2().start(); } void start() { Canvas.show(); drawFrame(); } void drawFrame() { Canvas.drawLine( 50, 50, 50, 400); Canvas.drawLine(410, 50, 410, 400); Canvas.drawLine( 50, 400, 410, 400); Canvas.drawStringRight(50, 40, "気温"); Canvas.drawLine( 50, 100, 55, 100); Canvas.drawLine( 50, 200, 55, 200); Canvas.drawLine( 50, 300, 55, 300); Canvas.drawStringRight(45, 105, "30"); Canvas.drawStringRight(45, 205, "20"); Canvas.drawStringRight(45, 305, "10"); Canvas.drawStringRight(45, 405, "0"); Canvas.drawStringLeft(410, 40, "降水量 (mm)"); Canvas.drawLine(405, 100, 410, 100); Canvas.drawLine(405, 150, 410, 150); Canvas.drawLine(405, 200, 410, 200); Canvas.drawLine(405, 250, 410, 250); Canvas.drawLine(405, 300, 410, 300); Canvas.drawLine(405, 350, 410, 350); Canvas.drawStringRight(440, 105, "600"); Canvas.drawStringRight(440, 155, "500"); Canvas.drawStringRight(440, 205, "400"); Canvas.drawStringRight(440, 255, "300"); Canvas.drawStringRight(440, 305, "200"); Canvas.drawStringRight(440, 355, "100"); Canvas.drawStringRight(440, 405, "0"); Canvas.drawLine(140, 400, 140, 395); Canvas.drawLine(230, 400, 230, 395); Canvas.drawLine(320, 400, 320, 395); Canvas.drawStringCenter( 95, 420, "1-3月"); Canvas.drawStringCenter(185, 420, "4-6月"); Canvas.drawStringCenter(275, 420, "7-9月"); Canvas.drawStringCenter(365, 420, "10-12月"); } double[] getMaxTemperature() { double[] temperature = new double[4]; temperature[0] = 11.8; temperature[1] = 23.2; temperature[2] = 28.6; temperature[3] = 17.2; return temperature; } }
最終的には次のようになります。
今回利用する気象データは、気象庁が発表している2009年の東京で観測したものです。
ちなみに、初期状態では次のように外枠だけが描画された状態です。
いくつか重要な座標をまとめておきます。
- 外枠の左下の座標: (50, 400)
- 1℃ごとの高さ: 10
- 1mmごとの高さ: 0.5
- 3か月の幅: 90
a. 最高気温の表示
getMaxTemperatureメソッドは、長さ4の配列に順に
- 1月から3月までの平均最高気温、
- 4月から6月までの平均最高気温、
- 7月から9月までの平均最高気温、
- 10月から12月までの平均最高気温、
を代入したものを返します。これを利用して、次のような折れ線グラフをキャンバスに描画してください。
このとき、折れ線グラフは赤色 (255, 0, 0) で描画してください。・
ヒント
それぞれの線は、drawLineで引けます。折れ線グラフは推移をみるためのものなので、一番左の線を引くには1-3月のデータだけでは足らず、1-3月と4-6月のデータを同時に使用します。
ヒント
グラフのY座標は、気温が高いほど小さくなります。0℃のY座標は400なので、400からスタートして1℃ごとに10ずつ小さくなっていきます。
b. 最低気温の表示
次に、同じキャンバスに平均最低気温を描画してください。平均最高気温と同じ条件の平均最低気温は下記の通りです。
1-3月 | 4-6月 | 7-9月 | 10-12月 |
---|---|---|---|
4.7℃ | 16.2℃ | 22.5℃ | 10.8℃ |
このデータを利用して、次のような折れ線グラフをキャンバスに描画してください。最低気温の折れ線グラフは、青色 (0, 0, 255) で描画してください。・
ヒント
「(最高最低を問わず)気温を折れ線グラフで描画する」というメソッドがあれば楽です。
c. 降水量の表示
次に、同じキャンバスに降水量を描画してください。ただし、気温のように折れ線グラフではなく、棒グラフを使います。平均最高気温と同じ条件の降水量は下記の通りです。
1-3月 | 4-6月 | 7-9月 | 10-12月 |
---|---|---|---|
287.0mm | 630.5mm | 373.5mm | 510.5mm |
このデータを利用して、次のような棒グラフをキャンバスに描画してください。それぞれの棒の色はうすい灰色 (192, 192, 192) です。