1

2つのXYシリーズを含む美しいチャートを表示しています。各シリーズには、0から23までのX位置にプロットされた24の値があります。1つのシリーズは24時間の気温を示し、もう1つのシリーズは同じ24時間の降水確率を示します。

問題は、単一の垂直線を描画するための3番目のシリーズを追加しようとしたときに発生します(「カーソル」として使用され、OnTouchListener)。アイデアは、カーソルに使用できる単一の垂直線としてレンダリングされる2つのデータポイント系列を描画することです。

私はこれを試しました:

XYSeries cursorLine = new XYSeries("", 2);
cursorLine.add(5, 0);
cursorLine.add(5, 100);
dataset.addSeries(cursorLine);

ただし、何も表示されません。

また、このGoogleグループの投稿でACEのDanが提案したように、2つの非常に近いX値を使用してみました。

XYSeries cursorLine = new XYSeries("", 2);
cursorLine.add(5.00000, 0);
cursorLine.add(5.00001, 100);
dataset.addSeries(cursorLine);

残念ながら、これはチャートの幅全体に「カーソル」線を引き伸ばします。これは、指定した2つだけではなく24のデータポイントで構成されていると想定しているためです。例:

ここに画像の説明を入力してください

また、24個のデータポイントを追加してみました。23個はY値が0で、1個(X位置5)はY値が100です。これはCUBIC折れ線グラフであるため、カーソルが「かかと」で表示されます。下; 他の23ポイントのカーソルもチャートの下部に表示されます。例:

カーソルラインのかかとを表示します

隣接するデータポイントを+/-0.00001のX値に設定しようとしましたが、かかとが削除されません。水平方向にカーソル位置にどれだけ近づいても、かかとはほぼ同じです。

私はこの1時間ほどこれで遊んでいますが、単純な垂直線が表示されません。何か案は?

4

2 に答える 2

1

問題は、垂直線系列にscale=2を使用していることのようです。各スケールは、表示されるデータ範囲を計算し、完全に表示されるようにデータを適合させようとします。垂直線データを既存のスケールに追加することをお勧めします。

于 2013-03-27T07:57:37.553 に答える
0

まっすぐな縦線のように見えるという点で、ようやくそのような作品を見つけました。本当に、本当に汚い感じがしますが、コードは次のとおりです。

double x = 5;

for(double i = 0; i < 24; i++)
{
    if(i != x)
    {
        cursorLine.add(i, -100);
    }
    else
    {
        cursorLine.add(x - 0.000001, -100);
        cursorLine.add(x, 200);
        cursorLine.add(x + 0.000001, -100);
    }
}

xカーソルを描画するX位置に設定できます。

基本的に、私がやっていることは、グラフから遠く離れた線の下部と上部を描画して、表示されている部分が直線部分になるようにすることです。ですから、これにはまだ下部に「かかと」などがあります。しかし、ズームやパンは許可されていないため、これらは非表示になっているため、十分に機能します。

しかし、誰かがこれに対するより良い解決策を持っていれば素晴らしいでしょう。冷たいシャワーを浴びに行きます...

于 2013-03-27T07:12:12.227 に答える