0

私はgRaphaelを初めて使用し、ソースコードの選択を解除できるハードコアJS開発者ではありません。また、適切に使用する方法についてのドキュメントはありません。

アプリでドットチャートを起動して実行したいと思っていますが、x値とy値がチャートキャンバスにドットを描画する方法について混乱しています。

グラフのベースとしてhttp://g.raphaeljs.com/dotchart.htmlのデモを使用しています。ただし、データセットをいじくり回すと、グラフからすべてのドットが失われます。

キャンバス内のドットとxおよびyの関係を理解し​​ていないと思います。

データベースから返すデータを以下のコードに含める方法について誰かに教えてもらえますか?

返されるデータは、8から56の範囲の23個の要素を持つ配列です。

<script type="text/javascript" charset="utf-8"> 
            window.onload = function () {
                var r = Raphael("holder2"),
                    xs = <%= chart_xs(@weeks) %>,
                    ys = <%= chart_ys(@weeks) %>,
                    data = <%= chart_data(@weeks) %>,
                    axisy = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
                    axisx = ["12am", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12pm", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"];
                r.g.txtattr.font = "11px 'Fontin Sans', Fontin-Sans, sans-serif";

                r.g.dotchart(10, 10, 620, 260, xs, ys, data, {
                                        symbol: "o", 
                                        max: 10, 
                                        heat: true, 
                                        axis: "0 0 1 1", 
                                        axisxstep: 23, 
                                        axisystep: 6, 
                                        axisxlabels: axisx, 
                                        axisxtype: " ", 
                                        axisytype: " ", 
                                        axisylabels: axisy
                                        }).hover(function () {
                    this.tag = this.tag || r.g.tag(this.x, this.y, this.value, 0, this.r + 2).insertBefore(this);
                    this.tag.show();
                }, function () {
                    this.tag && this.tag.hide();
                });
            };
        </script>

このような出力:

 <script type="text/javascript" charset="utf-8"> 
                window.onload = function () {
                    var r = Raphael("holder2"),
                        xs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
                        ys = [220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220],
                        data = [20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20],
                        axisy = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
                        axisx = ["12am", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12pm", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"];
                    r.g.txtattr.font = "11px 'Fontin Sans', Fontin-Sans, sans-serif";

                    r.g.dotchart(10, 10, 620, 260, xs, ys, data, {symbol: "o", max: 10, heat: true, axis: "0 0 1 1", axisxstep: 23, axisystep: 6, axisxlabels: axisx, axisxtype: " ", axisytype: " ", axisylabels: axisy}).hover(function () {
                        this.tag = this.tag || r.g.tag(this.x, this.y, this.value, 0, this.r + 2).insertBefore(this);
                        this.tag.show();
                    }, function () {
                        this.tag && this.tag.hide();
                    });
                };
            </script> 

フレデリコ、なぜこのチャートが画面に何も表示されないのか説明できますか?説明が当てはまる場合は、23個のデータポイントのそれぞれをキャンバス全体に連続した線で表す必要があります。

<script type="text/javascript" charset="utf-8"> 
            window.onload = function () {
                var r = Raphael("holder"),
                    xs = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
                    ys = [7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7],
                    data = [294, 300, 204, 255, 348, 383, 334, 217, 114, 33, 44, 26, 41, 39, 52, 17, 13, 2, 0, 2, 5, 6, 64],
                    axisy = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
                    axisx = ["12am", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12pm", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"];
                r.g.txtattr.font = "11px 'Fontin Sans', Fontin-Sans, sans-serif";

                r.g.dotchart(10, 10, 620, 260, xs, ys, data, {symbol: "o", max: 10, heat: true, axis: "0 0 1 1", axisxstep: 23, axisystep: 6, axisxlabels: axisx, axisxtype: " ", axisytype: " ", axisylabels: axisy}).hover(function () {
                    this.tag = this.tag || r.g.tag(this.x, this.y, this.value, 0, this.r + 2).insertBefore(this);
                    this.tag.show();
                }, function () {
                    this.tag && this.tag.hide();
                });
            };
        </script>

ただし、何も表示されません。これは私のデータで発生している問題であり、このハードコードされたスクリプトのデータとほぼ一致しています。では、元の出力(質問を参照)のデータを正しく表示するにはどうすればよいと思いますか?

4

1 に答える 1

1

私はRubyonRailsに精通していませんが、graphaelについて、特に...非公式ドキュメントの存在について1つか2つは知っています。

ここで非公式のドキュメントを読んでみるか、ここでドットチャートの使用に関する他の例を参照してください。

お役に立てば幸いです。

アップデート

本質的には、次のようになります。

valuesx配列とvaluesy配列を使用して、各ドットをドットチャートのax、y座標に配置します。たとえば、単純なドットの例を参照すると、6番目のパラメータ(y値)が配列[220, 220, 220, 220, 220]であることがわかります。これらの値の1つを0に変更すると、残りのドットが1つよりも高くなっていることがわかります。 y値は0です。

同じことが5番目のパラメーター(x値)にも当てはまります。これを使用して、X軸に沿ってチャートの任意の場所にドットを配置できます(この例では、x値の配列が5、10、10の数字で構成されていることがわかります。 15など...

最後に、7番目のパラメーター(データ)を使用して、各ドットに値を指定します(これは、ドットの半径と色で表されます)。

これを念頭に置いて、グラフのすべてのドットは3つの数値を使用してレンダリングされます。

  • xcoordenate
  • y調整する
  • 価値

したがって、公式のドットチャートの例を振り返ると、x値が0から23(1日の24時間を表す)であり、y値が1から7までの数値で24回繰り返されていることがわかります(ドットの各シーケンスを対応する日に配置します)そして最後にデータは...まあ...その日のその時間にカウントされたものを表します:)。

デモのように、軸ラベルを使用してグラフをよりわかりやすくすることができます。

于 2011-02-08T04:04:57.363 に答える