遅くとも、他の人には役に立つかもしれません。
私はこの問題で苦労しました。特に、私はJavaの初心者です。 カスタムフォーマッタを実装しました。少し醜い解決策と思われるが、それは動作します。考え方は以下の通りである:Androidplotチュートリアルが示唆するように
- はArrayFormat.Y_VALS_ONLYを使用して、(使用する値についてのみ、Y軸を取り、アレイへのインデックスとしてX軸を残し、// Y_VALS_ONLYはXとして要素インデックスを使用することを意味します値)
- たびに、あなたのデータの変更は、あなたがここにいくつかのコードスニペットであるX軸
のために新しいデータをプロットに新しいフォーマッタを渡す必要があります。
まずカスタムラベル文字列に配列インデックスを変換するクラスです:
public class MyIndexFormat extends Format {
public String[] Labels = null;
@Override
public StringBuffer format(Object obj,
StringBuffer toAppendTo,
FieldPosition pos) {
// try turning value to index because it comes from indexes
// but if is too far from index, ignore it - it is a tick between indexes
float fl = ((Number)obj).floatValue();
int index = Math.round(fl);
if(Labels == null || Labels.length <= index ||
Math.abs(fl - index) > 0.1)
return new StringBuffer("");
return new StringBuffer(Labels[index]);
}
そして、ここで私はプロットにアタッチする方法です:
MyIndexFormat mif = new MyIndexFormat();
mif.Labels = // TODO: fill the array with your custom labels
// attach index->string formatter to the plot instance
pricesPlot.getGraphWidget().setDomainValueFormat(mif);
このトリックは、動的更新のためにも動作します。
注意:Androidplotは水平線の描画に問題があると思われます。したがって、データのY値が同じ場合は、奇妙な結果が得られる可能性があります。
ありがとうMartin: – K1988
ありがとうございます。 –
@Martinは、水平線の問題の言葉ですか?知らない人にとっては、水平線をプロットすると(プロットのy値はすべて0です)、プロットはグラフに表示されませんが、水平線ではない別のプロットがある場合は、水平線が表示されます。 – whyoz