2017-10-06 34 views
0

私のウェブアプリケーションの1つにAMCharts JSライブラリが実装されており、問題が発生しています。今、私は1つの単一のx軸のポイント(実際には日付)に複数のy軸の値を追加する必要があります。私は同じx軸のポイント(同じ日付)を含む5つの値5,1,5,4,1,3を持っていますが、グラフを観察するときに時には4が欠落し、時には画像に示されるように5があります。本当に間違っていますか?これは、データ複数のy軸値が1つのx軸ポイントと一致

{date: "2016-03-29", value: 5} 
{date: "2016-03-29", value: 1} 
{date: "2016-03-29", value: 5} 
{date: "2016-03-29", value: 4} 
{date: "2016-03-29", value: 1} 
{date: "2016-03-29", value: 3} 
{date: "2016-10-20", value: 0} 
{date: "2016-10-20", value: 0} 
{date: "2016-10-20", value: 0} 

enter image description here

答えて

0

セットアップの問題がいくつかありますの形です。

まず、parseDatesが有効なグラフでは、データが正しく構成されていません。同じ日付の複数の要素を持つことはできません。 AmChartsでは、同じ日付/カテゴリを共有する場合、データポイントをグループ化する必要があります。これは設計によるもので、ウェブサイトのすべての例でこれを示しているので、2016-03-29と2016-10-20のすべてのポイントを2つのオブジェクトに減らすことができます。私は、あなたがそれぞれのユニークな値のフィールドを必要とするので、これらの複数の値は、異なるグラフ・オブジェクトに対応すると仮定すなわち

[{ 
    date: "2016-03-29", 
    value1: 5, 
    value2: 1, 
    value3: 5, 
    value4: 4, 
    value5: 1, 
    value6: 3 
}, { 
    date: "2016-10-20" 
    value1: 0, 
    value2: 0, 
    value3: 0 
}] 

そして、あなたはそれらの点に対処するためにvalue6を通じてvalue1をするように設定valueFieldsで6つのグラフオブジェクトを持っています。繰り返しますが、私はあなたのデータセットに複数のグラフがあると仮定しています。

編集

コメントはこれがそうでないことを示し、それらはすべて1つのグラフに属しています。 parseDates対応のグラフでは、同じタイムスタンプを持つ複数のエントリを持つことができないため、データを再構成して固有のタイムスタンプを与える必要があります。これらの値が異なる時期に入った場合は、その情報を提供してください。これは動作します

{date: "2016-03-29 01:00", value: 5} 
{date: "2016-03-29 02:00", value: 1} 
{date: "2016-03-29 03:00", value: 5} 
{date: "2016-03-29 04:00", value: 4} 
{date: "2016-03-29 05:00", value: 1} 
{date: "2016-03-29 06:00", value: 3} 
{date: "2016-10-20 01:00", value: 0} 
{date: "2016-10-20 02:00", value: 0} 
{date: "2016-10-20 03:00", value: 0} 

いますが、(この場合は"YYYY-MM-DD JJ:NN"で)のタイムスタンプと一致し、あなたのポイントの間で最小の間隔に適応するためにあなたのminPeriodを調整するために、あなたのdataDateFormatを設定する必要があります。たとえば、と仮定すると、あなたのデータが毎時間です(この例では"hh")。

日付を解析しないと、設定を保持できますが、複数の2016-03-29のエントリがある場合、グラフが変なように見えます。それらはあなたの唯一の選択肢です。

複数の値軸を表示する場合は、値軸をグラフに関連付ける必要があります。複数の値軸が必要な場合は、複数のグラフが必要です。各グラフのvalueAxisプロパティをvalueAxisオブジェクトまたはvalueAxis idに割り当てる必要があります。 1つのグラフオブジェクトに複数の値軸を割り当てることはできません。これは、this exampleでどのように動作するかを見ることができます。

だけ1つのグラフを持っていると、第2の値軸を表示し、重複するグラフのインスタンスを作成し、それを視覚的側面を無効にし、そのようにする必要がある場合:

valueAxes: [{ 
    "position": "left", 
    "id": "v1" 
    }, { 
    "position": "right", 
    "id": "v2" 
    }], 
    graphs: [{ 
    //initial graph 
    type: "line", 
    bullet: "round", 
    valueField: "value" 
    }, { 
    //invisible duplicate graph 
    //for second axis 
    lineAlpha: 0, 
    showBalloons: false, 
    visibleInLegend: false, 
    valueAxis: "v2", 
    valueField: "value" 
    }], 

Demo

+0

実は私のデータだけではなく、 1つの日付に対して最大6つの値に制限されていますが、それは15または多分数えられるかもしれません。第二に、私はこれのために複数のグラフを使用していない、私はこれらのすべてのポイントに対応する単一のグラフが欲しい。私は2番目のグラフを持っていますが、それはちょうど最初のグラフに直接関係していない傾向線(1つの日付に対してすべてのy軸値の中央値)を描くことです。 –

+0

私が言ったように、同じ正確な日付に複数のポイントを持たせることはできません。 AmChartsはそのために設計されていません。あなたの値がその日付の複数の異なるタイムスタンプ(2016-03-26 01:00、2016-03-26 02:00など)に関連付けられている場合、それは動作します。したがって、タイムスタンプの追加とdataDateFormatの変更に関するコメントminPeriodを使用してそれらを認識します。ポイントはまだ複数のy軸を持ちます。 – xorspark

+0

グラフが1つしかない場合は、それを複製して2番目の値の軸に割り当てます。あなたはそれのすべての視覚的側面も無効にしたいと思うでしょう。 [デモ](https://codepen.io/team/amcharts/pen/f30443d7dcad795b8cdf1990a1a3a1ee?editors=0010) – xorspark

関連する問題