2020年5月4日 星期一

[ Android Studio ] MPAndroidChart套件之線圖 - 顯示標籤(標記檢視)最高點與最低點



一、動態標示的方法:
使用 MarkerView 類別來畫出形狀或標示。

在 onDraw 加入
Paint p=new Paint();
p.setAntiAlias(true);
p.setColor(Color.parseColor("#FFFFFF"));
RectF rf=new RectF(0,0,200,100);
canvas.drawRoundRect(rf,15,15,p);

二、最高最低的方法:
使用 LineChartRenderer 類別來畫形狀或標示。
先計算出最高最低點再畫出形狀。


1. LineChartRenderer類別的drawValue加入以下內容:



Transformer trans=mChart.getTransformer(dataSet.getAxisDependency());
MPPointD pointD_highest=trans.getPixelForValues(highest_x,highest_y);
MPPointD pointD_lowest=trans.getPixelForValues(lowest_x,lowest_y);

point(c,pointD_highest.x,pointD_highest.y,"最高");
point(c,pointD_lowest.x,pointD_lowest.y,"最低");

2. 畫出形狀標示:
private void point(Canvas c,double x,double y,String text0) {

    float width=mChart.getWidth();
    float hight=mChart.getHeight();

    if(width<x+100){
        x=x-(x+100-width);
    }
    if(hight<y+50){
        y=y-(y+50-hight);
    }
    Paint p =new Paint();
    p.setAntiAlias(true);
    p.setColor(Color.parseColor("#FFFFFF"));
    RectF rf=new RectF((float) x,(float)y,(float)x+100,(float)y+60);
    c.drawRoundRect(rf,15,15,p);

    Paint p0=new Paint();
    p0.setAntiAlias(true);
    p0.setColor(Color.RED);
    p0.setTextSize(36);
    c.drawText(text0,(float)x,(float)y+50,p0);


}

三、平均值畫直線的方法:

float sum=0;
for(int i=0;i<set1.getEntryCount();i++){
    sum=sum+set1.getEntryForIndex(i).getY();
}
float navg=sum/set1.getEntryCount();
LimitLine avgLine=new LimitLine(navg,navg+"值值");
avgLine.setTextSize(16);
avgLine.enableDashedLine(6,4,4);
avgLine.disableDashedLine();
avgLine.setLineColor(Color.parseColor("#33CC33"));
avgLine.setTextColor(Color.RED);
lineChart.getAxisLeft().addLimitLine(avgLine);

影片教學:

 

沒有留言:

張貼留言

影片的問題請留在影片的留言區裡。
部落格不會另外通知給我,所以很難發現你有留言。