1

MultipleTemperatureChart に基づいて、3 つのシリーズでグラフを作成しようとしています。- 3 つのシリーズの x 値は同じです。- 3 つの Y 軸には異なる値がありますが、2 つの Y 軸のみを使用し、1 つの Y 軸を黒色でペイントすると、表示されません。

「addXYSeries(dataset, new String[] { "Temperatura" }, x, y, Z);」を使用する場合、TWO に同じスケールを使用したいと思います。* Z= scale 、正しい目盛りで、これは「3th」シリーズなので、目盛りとして 3 を使用します。すべて問題ありませんが、スケールが異なります。しかし、スケールとして 0 を使用すると、3 番目のシリーズが 1 番目のシリーズと同じスケールになるため、問題が発生します。 AVDでそれは止まります!!!

誰かが私を助けることができますか?ありがとう。

クラウディオ

public Intent getIntent(Context context) {
    String[] titles = new String[] { "Corrente" };
    List<double[]> x = new ArrayList<double[]>();
    List<double[]> y = new ArrayList<double[]>();


    x.add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });
    y.add(new double[] { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 });

    int[] colors = new int[] { Color.BLUE, Color.RED, Color.GREEN };
    PointStyle[] styles = new PointStyle[] { PointStyle.POINT, PointStyle.POINT, PointStyle.POINT };

    XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(3);
    renderer.setAxisTitleTextSize(16);
    renderer.setChartTitleTextSize(20);
    renderer.setLabelsTextSize(15);
    renderer.setLegendTextSize(15);
    renderer.setPointSize(5f);
    renderer.setMargins(new int[] { 20, 30, 15, 20 });
    int length = colors.length;  //length é o total de series
    for (int i = 0; i < length; i++) {
       XYSeriesRenderer r = new XYSeriesRenderer();
       r.setColor(colors[i]);
       r.setPointStyle(styles[i]);
       renderer.addSeriesRenderer(r);
    }
    for (int i = 0; i < length; i++) {
      XYSeriesRenderer r = (XYSeriesRenderer) renderer.getSeriesRendererAt(i);
      r.setLineWidth(2f);
    }
    //titulo do gráfico
    renderer.setChartTitle("Curva 1");
    renderer.setXTitle("Tempo/hrs");
    renderer.setYTitle("Amperes/Graus °C" );
    renderer.setAxesColor(Color.LTGRAY);
    renderer.setLabelsColor(Color.LTGRAY); 
    renderer.setXLabelsColor(Color.LTGRAY);
    renderer.setYLabelsColor(0, colors[0]);
    renderer.setYLabelsColor(1, colors[1]);
   // renderer.setYLabelsColor(2, Color.BLACK);
    renderer.setYTitle("volts", 1);
    renderer.setYAxisAlign(Align.RIGHT, 1);
    renderer.setYLabelsAlign(Align.LEFT, 1);
    //quantia de valores "ticks"
    //renderer.setXLabels(24);                  
    //renderer.setYLabels(10);      
    renderer.setXAxisMin(0);
    renderer.setXAxisMax(12);
    renderer.setYAxisMin(0);
    renderer.setYAxisMax(32);
    renderer.setXLabelsAlign(Align.RIGHT);
    renderer.setYLabelsAlign(Align.RIGHT);
    renderer.setZoomButtonsVisible(true);
    renderer.setPanLimits(new double[] { 0, 200, 0, 200 });
    renderer.setZoomLimits(new double[] { 0, 200, 0, 200 });
    renderer.setZoomRate(1.05f);
    renderer.setShowGrid(true);

    XYMultipleSeriesDataset dataset = buildDataset(titles, x, y);

    //---- gráfico de tensão
    y.clear();
    y.add(new double[] { 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 });
    addXYSeries(dataset, new String[] { "Tensão" }, x, y, 1);
    // ----- gráfico de temperatura
    y.clear();
    y.add(new double[] { 0, 11, 10, 10, 11, 10, 10, 10, 9, 10, 10, 10 });
    addXYSeries(dataset, new String[] { "Temperatura" }, x, y, 0);

    for (int i = 0; i < length; i++) {
        XYSeriesRenderer seriesRenderer = (XYSeriesRenderer) renderer.getSeriesRendererAt(i);
        // ---- seleciona qual gráfico preencher
        if (i == length - 1) {
          FillOutsideLine fill = new FillOutsideLine(FillOutsideLine.Type.NONE); //NONE mostra valores sobre o gráfico
          fill.setColor(Color.GREEN);
          seriesRenderer.addFillOutsideLine(fill);
        }
        seriesRenderer.setLineWidth(2.5f);
        seriesRenderer.setDisplayChartValues(true);
        seriesRenderer.setChartValuesTextSize(10f);
      }

    Intent intent = ChartFactory.getCubicLineChartIntent(context, dataset, renderer, 0.3f,
        "Average temperature");
    return intent;

}

public Intent execute(Context context) {
    // TODO Auto-generated method stub
    return null;
}

}

ここでログエラー:

11-01 18:31:20.154: D/dalvikvm(9567): GC_EXTERNAL_ALLOC が 731 オブジェクトを解放 / 92 ミリ秒で 52992 バイト11-01 18:31:26.154: D/dalvikvm(9567): GC_FOR_MALLOC は 8229 オブジェクト / 498936 バイトを 57 ミリ秒で解放しました 11-01 18:31:26.264: D/dalvikvm(9567): GetFieldID: フィールド Ljava/util が見つかりません/HashMap;.loadFactor:F 11-01 18:31:26.264: D/dalvikvm(9567): GetFieldID: フィールド Ljava/util/HashMap が見つかりません;.loadFactor:F 11-01 18:31:26.384: D/ dalvikvm (9567): GetFieldID: フィールド Ljava/util/HashMap が見つかりません;.loadFactor:F 11-01 18:31:26.404: D/dalvikvm (9567): GetFieldID: フィールド Ljava/util/HashMap が見つかりません。 loadFactor:F 11-01 18:31:26.416: D/dalvikvm(9567): GetFieldID: フィールド Ljava/util/HashMap が見つかりません;.loadFactor:F 11-01 18:31:26.416: D/dalvikvm(9567) : GetFieldID:フィールド Ljava/util/HashMap が見つかりません;.loadFactor:F 11-01 18:31:26.416: D/dalvikvm(9567): GetFieldID: フィールド Ljava/util/HashMap が見つかりません;.loadFactor:F 11-01 18 :31:26.424: D/dalvikvm(9567): GetFieldID: フィールドが見つかりません Ljava/util/HashMap;.loadFactor:F 11-01 18:31:26.436: D/dalvikvm(9567): GetFieldID: フィールドが見つかりませんLjava/util/HashMap;.loadFactor:F 11-01 18:31:26.436: D/dalvikvm(9567): GetFieldID: フィールドが見つかりません Ljava/util/HashMap;.loadFactor:F 11-01 18:31:26.614 : D/dalvikvm(9567): GC_FOR_MALLOC は 6683 オブジェクト / 465000 バイトを 60 ミリ秒で解放しましたGetFieldID: フィールド Ljava/util/HashMap が見つかりません;.loadFactor:F 11-01 18:31:26.436: D/dalvikvm(9567): GetFieldID: フィールド Ljava/util/HashMap が見つかりません;.loadFactor:F 11- 01 18:31:26.614: D/dalvikvm(9567): GC_FOR_MALLOC は 6683 オブジェクト / 465000 バイトを 60 ミリ秒で解放しましたGetFieldID: フィールド Ljava/util/HashMap が見つかりません;.loadFactor:F 11-01 18:31:26.436: D/dalvikvm(9567): GetFieldID: フィールド Ljava/util/HashMap が見つかりません;.loadFactor:F 11- 01 18:31:26.614: D/dalvikvm(9567): GC_FOR_MALLOC は 6683 オブジェクト / 465000 バイトを 60 ミリ秒で解放しました

ここで問題が発生します。

11-01 18:31:30.658: D/AndroidRuntime(9567): VM をシャットダウンしています 11-01 18:31:30.658: W/dalvikvm(9567): threadid=1: キャッチされない例外で終了するスレッド (group=0x4001d800) 11 -01 18:31:30.678: E/AndroidRuntime(9567): 致命的な例外: メイン 11-01 18:31:30.678: E/AndroidRuntime(9567): java.lang.NullPointerException 11-01 18:31:30.678: E /AndroidRuntime(9567): org.achartengine.chart.XYChart.toRealPoint(XYChart.java:877) 11-01 18:31:30.678: E/AndroidRuntime(9567): org.achartengine.tools.Pan.apply( Pan.java:74) 11-01 18:31:30.678: E/AndroidRuntime (9567): org.achartengine.TouchHandler.handleTouch(TouchHandler.java:119) 11-01 18:31:30.678: E/AndroidRuntime ( 9567): org.achartengine.GraphicalView.onTouchEvent(GraphicalView.java:300) 11-01 18:31:30.678: E/AndroidRuntime(9567): android.view.View.dispatchTouchEvent(View.java:3766) 11-01 18:31:30.678: E/AndroidRuntime(9567): android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 11-01 18:31:30.678: E/AndroidRuntime(9567): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936) 11-01 18:31:30.678: E/AndroidRuntime(9567): com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java) :1671) 11-01 18:31:30.678: E/AndroidRuntime(9567): com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107) 11-01 18:31:30.678: E /AndroidRuntime(9567): android.app.Activity.dispatchTouchEvent(Activity.java:2086) 11-01 18:31:30.678: E/AndroidRuntime(9567): com.android.internal.policy.impl.PhoneWindow$ でDecorView.dispatchTouchEvent(PhoneWindow.java:1655) 11-01 18:31:30.678: E/AndroidRuntime(9567): android.view.ViewRoot で。handleMessage(ViewRoot.java:1785) 11-01 18:31:30.678: E/AndroidRuntime(9567): android.os.Handler.dispatchMessage(Handler.java:99) 11-01 18:31:30.678: E/ AndroidRuntime(9567): android.os.Looper.loop(Looper.java:123) 11-01 18:31:30.678: E/AndroidRuntime(9567): android.app.ActivityThread.main(ActivityThread.java:4627) ) 11-01 18:31:30.678: E/AndroidRuntime(9567): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 11-01 18:31:30.678: E/AndroidRuntime(9567): Java で。 lang.reflect.Method.invoke(Method.java:521) 11-01 18:31:30.678: E/AndroidRuntime(9567): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) ) 11-01 18:31:30.678: E/AndroidRuntime(9567): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 11-01 18:31:30.678: E/AndroidRuntime(9567) ): dalvik.system で。NativeStart.main(ネイティブメソッド)

4

1 に答える 1

0

このバグの修正が SVN にチェックインされました。これを含むバージョンは、こちらからダウンロードできます。

于 2014-01-07T10:57:48.683 に答える