17

アプリケーションで MPAndroid Chart を使用したいと考えています。ただし、現在、点を指定すると、鋭いエッジを持つ折れ線グラフが得られます。グラフの遷移をスムーズにするにはどうすればよいですか (たとえば、正弦波に似ています)。

ありがとう !

4

4 に答える 4

49

MPAndroidChart:v3.0.0-beta1:

lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);
于 2016-08-24T07:07:18.897 に答える
12

コミュニティに役立つ滑らかな折れ線グラフを作成しました。その外観は次のようになります。

ここに画像の説明を入力

public LineChart lineChartDownFill;
...

private void initLineChartDownFill(View view) {

        lineChartDownFill = view.findViewById(R.id.lineChartDownFill);
        lineChartDownFill.setTouchEnabled(false);
        lineChartDownFill.setDragEnabled(true);
        lineChartDownFill.setScaleEnabled(true);
        lineChartDownFill.setPinchZoom(false);
        lineChartDownFill.setDrawGridBackground(false);
        lineChartDownFill.setMaxHighlightDistance(200);
        lineChartDownFill.setViewPortOffsets(0, 0, 0, 0);
        lineChartDownFillWithData();

    }

    private void lineChartDownFillWithData() {


        Description description = new Description();
        description.setText("Days Data");

        lineChartDownFill.setDescription(description);


        ArrayList<Entry> entryArrayList = new ArrayList<>();
        entryArrayList.add(new Entry(0, 60f, "1"));
        entryArrayList.add(new Entry(1, 55f, "2"));
        entryArrayList.add(new Entry(2, 60f, "3"));
        entryArrayList.add(new Entry(3, 40f, "4"));
        entryArrayList.add(new Entry(4, 45f, "5"));
        entryArrayList.add(new Entry(5, 36f, "6"));
        entryArrayList.add(new Entry(6, 30f, "7"));
        entryArrayList.add(new Entry(7, 40f, "8"));
        entryArrayList.add(new Entry(8, 45f, "9"));
        entryArrayList.add(new Entry(9, 60f, "10"));
        entryArrayList.add(new Entry(10, 45f, "10"));
        entryArrayList.add(new Entry(11, 20f, "10"));


        //LineDataSet is the line on the graph
        LineDataSet lineDataSet = new LineDataSet(entryArrayList, "This is y bill");

        lineDataSet.setLineWidth(5f);
        lineDataSet.setColor(Color.GRAY);
        lineDataSet.setCircleColorHole(Color.GREEN);
        lineDataSet.setCircleColor(R.color.colorWhite);
        lineDataSet.setHighLightColor(Color.RED);
        lineDataSet.setDrawValues(false);
        lineDataSet.setCircleRadius(10f);
        lineDataSet.setCircleColor(Color.YELLOW);

        //to make the smooth line as the graph is adrapt change so smooth curve
        lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);
        //to enable the cubic density : if 1 then it will be sharp curve
        lineDataSet.setCubicIntensity(0.2f);

        //to fill the below of smooth line in graph
        lineDataSet.setDrawFilled(true);
        lineDataSet.setFillColor(Color.BLACK);
        //set the transparency
        lineDataSet.setFillAlpha(80);

        //set the gradiant then the above draw fill color will be replace
        Drawable drawable = ContextCompat.getDrawable(getContext(), R.drawable.gradiant);
        lineDataSet.setFillDrawable(drawable);

        //set legend disable or enable to hide {the left down corner name of graph}
        Legend legend = lineChartDownFill.getLegend();
        legend.setEnabled(false);

        //to remove the cricle from the graph
        lineDataSet.setDrawCircles(false);

        //lineDataSet.setColor(ColorTemplate.COLORFUL_COLORS);


        ArrayList<ILineDataSet> iLineDataSetArrayList = new ArrayList<>();
        iLineDataSetArrayList.add(lineDataSet);

        //LineData is the data accord
        LineData lineData = new LineData(iLineDataSetArrayList);
        lineData.setValueTextSize(13f);
        lineData.setValueTextColor(Color.BLACK);


        lineChartDownFill.setData(lineData);
        lineChartDownFill.invalidate();


    }
于 2018-04-06T18:04:33.910 に答える
11

さて、私は自分で答えを見つけました。それはかなり簡単です。行を追加しただけです

set.setDrawCubic(true);

私の LineDataSet に追加し、完了しました。

于 2015-03-10T11:10:56.223 に答える
0

コトリン:

val uploadLineDataSet = LineDataSet(uploadList, "Upload")
uploadLineDataSet.mode = LineDataSet.Mode.CUBIC_BEZIER

ジャワ:

LineDataSet uploadLineDataSet = new LineDataSet(uploadList, "Upload");
uploadLineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);
于 2020-05-11T16:50:05.100 に答える