- - PR -
J Free Chart の軸表示に関して
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-07-06 17:35
初めて投稿させていただきます。
早速ですが、質問です。 現在、下に記述したコードを用いて、折れ線グラフを作成しています。 内容としては、あるもののデータを1週間単位で表示させるものを想定して います。日付の部分には文字列型を用いていますが、実際には数値型(int型)で 表示させ、月末日を過ぎると翌月の1日になるようにしたいと思っています。 将来的には、1日を24時間に分割した上で、X軸には1日ごとの日付のみ表示できる ようにまで広げたいです。 そこで、2つ質問なんですが、 (1)int型にデータを持たせた状態で、月が替わったときに1日に戻すようなことは 実現できないでしょうか? (2)土曜日の日付は青、日曜日の日付は赤、といった風に、X軸の任意の数値(文字 でも可)を、好きな色に変えられないでしょうか? ご存知の方いらっしゃれば、回答いただきたく思います。 --------------------------------------------------------------------- import java.io.IOException; //サーブレット(Tomcat)関連のインポート import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //JFreeChart関連のインポート import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.NumberTickUnit; import org.jfree.chart.axis.TickUnit; import org.jfree.chart.axis.TickUnits; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.DefaultCategoryDataset; public class Sample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ //データセットの作成 String series1 = "第1系列"; DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(20.0, series1, "29"); dataset.addValue(13.5, series1, "30"); dataset.addValue(14.0, series1, "31"); dataset.addValue(8.0, series1, "1"); dataset.addValue(10.0, series1, "2"); dataset.addValue(9.0, series1, "3"); dataset.addValue(15.0, series1, "4"); //折れ線グラフの作成 JFreeChart chart = ChartFactory.createLineChart( "サンプル", //グラフのタイトル "", //X軸のタイトル "", //Y軸のタイトル dataset, //各系列のデータ PlotOrientation.VERTICAL, //縦書き(X軸を横、Y軸を縦に設定) true, //判例を描画 false, //Tool Tips の表示 false //URLの生成 ); //縦軸の上限を設定するための処理 CategoryPlot plot = chart.getCategoryPlot(); NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); //最大値の取得 rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); //整数値のみで表示する rangeAxis.setAutoRange(false); //上限の自動設定を解除 rangeAxis.setRange(0, 26); //(下限,上限) //Y軸の線引きの基準値の設定 TickUnits tickUnits = new TickUnits(); TickUnit unit = new NumberTickUnit(5); //Y軸上の線を引く間隔 tickUnits.add(unit); rangeAxis.setStandardTickUnits(tickUnits); //グラフの出力 response.setContentType("image/jpeg"); ServletOutputStream image = response.getOutputStream(); ChartUtilities.writeChartAsJPEG(image,chart,600,400); } } [ メッセージ編集済み 編集者: コークス 編集日時 2007-07-06 17:36 ] [ メッセージ編集済み 編集者: コークス 編集日時 2007-07-06 17:37 ] [ メッセージ編集済み 編集者: コークス 編集日時 2007-07-06 17:38 ] | ||||
|
投稿日時: 2007-07-06 21:33
1.はCalendar型を通せば簡単にできるでしょう。
2.はAPIに設定できるオブジェクトが乗っていると思います。 それで変更できるか確認してみましょう。 | ||||
|
投稿日時: 2007-07-09 16:15
早々にお返事をいただいていたにもかかわらず、返答が遅くなり申し訳ありません。
>杏さん >1.はCalendar型を通せば簡単にできるでしょう。 Calendar型とは、「import java.util.Calendar」のことでしょうか? >2.はAPIに設定できるオブジェクトが乗っていると思います。 文献を探して読んでみたのですが、どこが該当する部分なのか検討がつかず、困っています。 不躾なのは承知でのお願いなのですが、サンプルになりそうなWebページや、ヒントめいたサンプルみたいなのをご教授いただけないでしょうか。 どちらも自分で試行錯誤していますが、どうにも手詰まりでうまくいきません。 以上、重ねてよろしくお願いいたします。 | ||||
|
投稿日時: 2007-07-09 23:06
1側のsample
http://www.gst-gr.com/tools/jfreechart/api/v1.0.1/javadoc/org/jfree/data/category/DefaultCategoryDataset.html#addValue(double,%20java.lang.Comparable,%20java.lang.Comparable) をみると double と http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/Comparable.html が二つせっていされていますね。 とみるとここでは設定できないということがわかりますよね? じゃあ JFreeCharはどうか よくみると drowというメソッドがありますね。 こうやって解決していくのです。 | ||||
|
投稿日時: 2007-07-11 16:15
結局のところ、自己解決しました。
1.に関しては、時系列グラフ(TimeSeriesChart)に対して、X軸の表示にはDateTickUnitを 用いることで、思ったとおりの結果を得ることができました。 2.については、引き続きAPIと格闘しながら、何とかやってみたいと思います。 |
1