5

x と y の値を固定してグラフを作成することはできますか? 私の x 値は 60、90、120、180、250、375、500、750、1000 のようなものですが、androidplot は値間の等距離に基づいて 9 つの異なる値を作成します。

Number[] timestamps = {60, 90, 120, 180, 250, 375, 500, 750, 1000};

私は mySimpleXYPlot.setDomainStep(XYStepMode.SUBDIVIDE, 9); を使用しています。解決策はこのコマンドにあると思いますが、その方法がわかりません。

ここに画像の説明を入力

完全なコード:

mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot);
         Number[] numSightings = {70, 63, 56, 49, 43, 37, 32, 27, 23};

         Number[] timestamps = {
            60, 90, 120, 180, 250, 375, 500, 750, 1000 

         };

         // create our series from our array of nums:
         XYSeries series2 = new SimpleXYSeries(
                 Arrays.asList(timestamps),
                 Arrays.asList(numSightings),
                 "USA");


         mySimpleXYPlot.getGraphWidget().getGridBackgroundPaint().setColor(Color.WHITE);
         mySimpleXYPlot.getGraphWidget().getGridLinePaint().setColor(Color.BLACK);
         mySimpleXYPlot.getGraphWidget().getGridLinePaint().setPathEffect(new DashPathEffect(new float[]{1,1}, 1));
         mySimpleXYPlot.getGraphWidget().getDomainOriginLinePaint().setColor(Color.BLACK);
         mySimpleXYPlot.getGraphWidget().getRangeOriginLinePaint().setColor(Color.BLACK);

         mySimpleXYPlot.setBorderStyle(Plot.BorderStyle.SQUARE, null, null);
         mySimpleXYPlot.getBorderPaint().setStrokeWidth(1);
         mySimpleXYPlot.getBorderPaint().setAntiAlias(false);
         mySimpleXYPlot.getBorderPaint().setColor(Color.WHITE);

         // Create a formatter to use for drawing a series using LineAndPointRenderer:
         LineAndPointFormatter series1Format = new LineAndPointFormatter(
                 Color.rgb(0, 100, 0),                   // line color
                 Color.rgb(0, 100, 0),                   // point color
                 Color.rgb(100, 200, 0));                // fill color


         // setup our line fill paint to be a slightly transparent gradient:
         Paint lineFill = new Paint();
         lineFill.setAlpha(200);
         lineFill.setShader(new LinearGradient(0, 0, 0, 250, Color.WHITE, Color.GREEN, Shader.TileMode.MIRROR));

         LineAndPointFormatter formatter  = new LineAndPointFormatter(Color.rgb(0, 0,0), Color.BLUE, Color.RED);
         formatter.setFillPaint(lineFill);
         mySimpleXYPlot.getGraphWidget().setPaddingRight(2);
         mySimpleXYPlot.addSeries(series2, formatter);

         // draw a domain tick for each year:
         mySimpleXYPlot.setDomainStep(XYStepMode.SUBDIVIDE, 9);
         mySimpleXYPlot.setRangeBoundaries(-20,100, BoundaryMode.FIXED);

         // customize our domain/range labels
         mySimpleXYPlot.setDomainLabel("Frequency (Hz)");
         mySimpleXYPlot.setRangeLabel("Loud pressure (dB)");
         mySimpleXYPlot.getLegendWidget().setVisible(false);

         // get rid of decimal points in our range labels:
         mySimpleXYPlot.setRangeValueFormat(new DecimalFormat("0"));

         //mySimpleXYPlot.setDomainValueFormat(new MyDateFormat());

         // by default, AndroidPlot displays developer guides to aid in laying out your plot.
         // To get rid of them call disableAllMarkup():
         mySimpleXYPlot.disableAllMarkup();
4

1 に答える 1

5

XYStepType.INCREMENT_BY_VALUE

このモードは、原点の上下の値の倍数ごとに目盛りを作成します。クイック スタートの例を次のように変更してみましょう。

mySimpleXYPlot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, 1);

これは XYPlot に、x から domainOrigin を差し引いたモジュラスがゼロであるすべての可視ドメイン値 (x) に対して目盛りを描画するように指示します。または、より簡単に言えば、domainOrigin から始まる 1 の増分ごとに目盛りを描画します。さて、プロットは次のようになります。

ここに画像の説明を入力

androidplotリファレンスから

于 2012-09-24T12:31:37.400 に答える