曲线图-测振测温设备 直流分量图表完成

master
wenfei 1 month ago
parent 7dde0593ef
commit be984e0d2f

@ -78,11 +78,20 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
private double maxAddSpeed=0;
private double maxSpeed=0;
private double maxWy=0;
private double maxZlfl=0;
private double minZlfl=0;
private double maxZqpl=0;
private double maxFreq=0;
private ArrayList<String> xLabelListData = new ArrayList<>();
private ArrayList<String> xLabelListDataAddSpeed = new ArrayList<>();
private ArrayList<String> xLabelListDataSpeed = new ArrayList<>();
private ArrayList<String> xLabelListDataWy = new ArrayList<>();
private ArrayList<String> xLabelListDataZlfl = new ArrayList<>();
private ArrayList<String> xLabelListDataZqpl = new ArrayList<>();
private ArrayList<String> xLabelListDataFreq = new ArrayList<>();
@Override
protected ActivityDeviceAlarmInfoLineChartBinding getBinding() {
@ -233,6 +242,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
binding.rb5.setChecked(true);
binding.rb6.setChecked(false);
binding.rb7.setChecked(false);
renderZlfl();
}
});
binding.rb6.setOnCheckedChangeListener((buttonView, isChecked) -> {
@ -244,6 +254,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
binding.rb5.setChecked(false);
binding.rb6.setChecked(true);
binding.rb7.setChecked(false);
renderZqpl();
}
});
binding.rb7.setOnCheckedChangeListener((buttonView, isChecked) -> {
@ -255,6 +266,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
binding.rb5.setChecked(false);
binding.rb6.setChecked(false);
binding.rb7.setChecked(true);
renderFreq();
}
});
}
@ -279,7 +291,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
if(bean!=null && bean.getCode()==20000 && bean.isSuccess() && bean.getData()!=null && !bean.getData().isEmpty()){
deviceAlarmDataList.clear();
deviceAlarmDataList.addAll(bean.getData());
//Collections.reverse(deviceAlarmDataList);
Collections.reverse(deviceAlarmDataList);
if(binding.rb1.isChecked()){
renderTemperature();
}
@ -292,6 +304,15 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
if(binding.rb4.isChecked()){
renderWy();
}
if(binding.rb4.isChecked()){
renderZlfl();
}
if(binding.rb5.isChecked()){
renderZqpl();
}
if(binding.rb6.isChecked()){
renderFreq();
}
}else{
showLog("is emply");
setDes();
@ -426,7 +447,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
binding.linechart.invalidate();
XAxis xAxis = binding.linechart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setAxisMinimum(1);//设置x轴最小
xAxis.setAxisMinimum(0);//设置x轴最小
xAxis.setTextSize(12);
//xAxis.setTextColor(Color.parseColor("#FC863E"));
xAxis.setEnabled(true);//是否显示x轴是否禁用
@ -510,7 +531,9 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
}
showLog(String.valueOf(deviceAlarmDataList.size()));
showLog("maxAddSpeed:"+String.valueOf(maxAddSpeed));
if(maxAddSpeed<2.5){
if(maxAddSpeed<1){
maxAddSpeed=1;
}else if(maxAddSpeed>=1&&maxAddSpeed<2.5){
maxAddSpeed=2.5;
}else if(maxAddSpeed>=2.5&&maxAddSpeed<4.5){
maxAddSpeed=5;
@ -603,7 +626,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
XAxis xAxis = binding.linechart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setAxisMinimum(1);//设置x轴最小
xAxis.setAxisMinimum(0);//设置x轴最小
xAxis.setTextSize(12);
//xAxis.setTextColor(Color.parseColor("#FC863E"));
xAxis.setEnabled(true);//是否显示x轴是否禁用
@ -680,10 +703,12 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
}
showLog(String.valueOf(deviceAlarmDataList.size()));
showLog("maxSpeed:"+String.valueOf(maxSpeed));
if(maxSpeed<2.5){
maxSpeed=2.5;
}else if(maxSpeed>=2.5&&maxSpeed<4.5){
maxSpeed=5;
if(maxAddSpeed<1){
maxAddSpeed=1;
}else if(maxAddSpeed>=1&&maxAddSpeed<2.5){
maxAddSpeed=2.5;
}else if(maxAddSpeed>=2.5&&maxAddSpeed<4.5){
maxAddSpeed=5;
}else if(maxSpeed>=4.5&&maxSpeed<6.5){
maxSpeed=7;
}else if(maxSpeed>=6.5&&maxSpeed<9){
@ -773,7 +798,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
XAxis xAxis = binding.linechart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setAxisMinimum(1);//设置x轴最小
xAxis.setAxisMinimum(0);//设置x轴最小
xAxis.setTextSize(12);
//xAxis.setTextColor(Color.parseColor("#FC863E"));
xAxis.setEnabled(true);//是否显示x轴是否禁用
@ -946,7 +971,7 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
XAxis xAxis = binding.linechart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setAxisMinimum(1);//设置x轴最小
xAxis.setAxisMinimum(0);//设置x轴最小
xAxis.setTextSize(12);
//xAxis.setTextColor(Color.parseColor("#FC863E"));
xAxis.setEnabled(true);//是否显示x轴是否禁用
@ -985,6 +1010,577 @@ public class DeviceAlarmInfoLineChartActivity extends BaseViewBindingActivity<Ac
// //设置为不可缩放
// binding.linechart.setScaleEnabled(false);
// //设置为可左右滑动
// binding.linechart.setDragEnabled(true);
}
private void renderZlfl(){
xLabelListDataZlfl.clear();
maxZlfl=0;
minZlfl=0;
List<Entry> entriesXZlfl = new ArrayList<>();
List<Entry> entriesYZlfl = new ArrayList<>();
List<Entry> entriesZZlfl = new ArrayList<>();
for (int i = 0; i < deviceAlarmDataList.size(); i++) {
try {
DeviceAlarmInfoLineChartBean.DeviceVibrationMonitoringData item = deviceAlarmDataList.get(i);
entriesXZlfl.add(new Entry(i, Float.parseFloat(item.getxDcComponent().toString())));
entriesYZlfl.add(new Entry(i, Float.parseFloat(item.getyDcComponent().toString())));
entriesZZlfl.add(new Entry(i, Float.parseFloat(item.getzDcComponent().toString())));
Date date = sdf.parse(item.getDeviceTime());
if(date != null){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
xLabelListDataZlfl.add(sdfHourMinute.format(calendar.getTime()));
}
if(item.getxDcComponent()!=null&& item.getxDcComponent() >maxZlfl){
maxZlfl=item.getxDcComponent();
}
if(item.getyDcComponent()!=null&& item.getyDcComponent() >maxZlfl){
maxZlfl=item.getyDcComponent();
}
if(item.getzDcComponent()!=null&& item.getzDcComponent() >maxZlfl){
maxZlfl=item.getzDcComponent();
}
if(item.getxDcComponent()!=null&& item.getxDcComponent() < minZlfl){
minZlfl=item.getxDcComponent();
}
if(item.getyDcComponent()!=null&& item.getyDcComponent() < minZlfl){
minZlfl=item.getyDcComponent();
}
if(item.getzDcComponent()!=null&& item.getzDcComponent() < minZlfl){
minZlfl=item.getzDcComponent();
}
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
showLog(String.valueOf(deviceAlarmDataList.size()));
showLog("maxZlfl:"+String.valueOf(maxZlfl));
showLog("minZlfl:"+String.valueOf(minZlfl));
if(maxZlfl<2){
maxZlfl=2;
}else if(maxZlfl>=2&&maxZlfl<4){
maxZlfl=4;
}else if(maxZlfl>=4&&maxZlfl<6){
maxZlfl=6;
}else if(maxZlfl>=6&&maxZlfl<8){
maxZlfl=8;
}else if(maxZlfl>=8&&maxZlfl<10){
maxZlfl=12;
}else if(maxZlfl>=12&&maxZlfl<20){
maxZlfl=20;
}else if(maxZlfl>=20&&maxZlfl<40){
maxZlfl=45;
}else if(maxZlfl>=40&&maxZlfl<60){
maxZlfl=70;
}else if(maxZlfl>=60&&maxZlfl<75){
maxZlfl=90;
}else if(maxZlfl>=75&&maxZlfl<90){
maxZlfl=105;
}else if(maxZlfl>=90&&maxZlfl<105){
maxZlfl=120;
}else if(maxZlfl>=105&&maxZlfl<120){
maxZlfl=135;
}else{
maxZlfl=maxZlfl+50;
}
if(minZlfl<0&&minZlfl>-2){
minZlfl=-2;
}else if(minZlfl<=-2&&minZlfl>-4){
minZlfl=-4;
}else if(minZlfl<=-4&&minZlfl>-6){
minZlfl=-6;
}else if(minZlfl<=-6&&minZlfl>-8){
minZlfl=-8;
}else if(minZlfl<=-8&&minZlfl>-10){
minZlfl=-12;
}else if(minZlfl<=-10&&minZlfl>-12){
minZlfl=-14;
}else if(minZlfl<=-12&&minZlfl>-14){
minZlfl=-16;
}else{
minZlfl=minZlfl-10;
}
showLog("maxZlfl:"+String.valueOf(maxZlfl));
showLog("minZlfl:"+String.valueOf(minZlfl));
setDataZlfl(entriesXZlfl,entriesYZlfl,entriesZZlfl);
}
private void setDataZlfl(List<Entry> entriesXZlfl,List<Entry> entriesYZlfl,List<Entry> entriesZZlfl) {
// 清除所有数据
binding.linechart.clear();
binding.linechart.invalidate(); // 重绘视图
List<ILineDataSet> sets = new ArrayList<>();
showLog(GsonString(entriesXZlfl));
showLog(GsonString(entriesYZlfl));
showLog(GsonString(entriesZZlfl));
String deviceNameLineX = deviceName+"X轴直流分量";
LineDataSet dataSet1 = new LineDataSet(entriesXZlfl, deviceNameLineX);
dataSet1.setValueTextSize(12);
dataSet1.setValueTextColor(Color.parseColor("#ff8000"));
dataSet1.setMode(LineDataSet.Mode.CUBIC_BEZIER);
dataSet1.setLineWidth(2);
//dataSet1.setCircleHoleRadius(3);
dataSet1.setDrawCircles(false); // 禁用圆点绘制
//dataSet1.enableDashedLine(5, 5, 0);
//dataSet1.setCircleColor(Color.parseColor("#ff8000"));
dataSet1.setColor(Color.parseColor("#ff8000"));
dataSet1.setDrawHighlightIndicators(false);
//dataSet1.setDrawFilled(true);
//dataSet1.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
dataSet1.setLineWidth(2);
dataSet1.setDrawValues(false);
sets.add(dataSet1);
String deviceNameLineY = deviceName+"Y轴直流分量";
LineDataSet dataSet2 = new LineDataSet(entriesYZlfl, deviceNameLineY);
dataSet2.setValueTextSize(12);
dataSet2.setValueTextColor(Color.parseColor("#0080ff"));
dataSet2.setMode(LineDataSet.Mode.CUBIC_BEZIER);
dataSet2.setLineWidth(2);
//dataSet2.setCircleHoleRadius(3);
dataSet2.setDrawCircles(false); // 禁用圆点绘制
//dataSet2.enableDashedLine(5, 5, 0);
//dataSet2.setCircleColor(Color.parseColor("#0080ff"));
dataSet2.setColor(Color.parseColor("#0080ff"));
dataSet2.setDrawHighlightIndicators(false);
//dataSet2.setDrawFilled(true);
//dataSet2.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
dataSet2.setLineWidth(2);
dataSet2.setDrawValues(false);
sets.add(dataSet2);
String deviceNameLineZ = deviceName+"Z轴直流分量";
LineDataSet dataSet3 = new LineDataSet(entriesZZlfl, deviceNameLineZ);
dataSet3.setValueTextSize(12);
dataSet3.setValueTextColor(Color.parseColor("#80ff00"));
dataSet3.setMode(LineDataSet.Mode.CUBIC_BEZIER);
dataSet3.setLineWidth(2);
//dataSet3.setCircleHoleRadius(3);//圆点大小
dataSet3.setDrawCircles(false); // 禁用圆点绘制
//dataSet3.enableDashedLine(5, 5, 0);//曲线间隔
//dataSet3.setCircleColor(Color.parseColor("#80ff00"));//圆点颜色
dataSet3.setColor(Color.parseColor("#80ff00"));//线颜色
dataSet3.setDrawHighlightIndicators(false);
//dataSet3.setDrawFilled(true);
//dataSet3.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
dataSet3.setLineWidth(2);
dataSet3.setDrawValues(false);
sets.add(dataSet3);
LineData lineData = new LineData(sets);
binding.linechart.setData(lineData);
binding.linechart.invalidate();
XAxis xAxis = binding.linechart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setAxisMinimum(0);//设置x轴最小
xAxis.setTextSize(12);
//xAxis.setTextColor(Color.parseColor("#FC863E"));
xAxis.setEnabled(true);//是否显示x轴是否禁用
xAxis.setDrawLabels(true); //设置x轴标签 即x轴上显示的数值
xAxis.setDrawGridLines(true);//是否设置x轴上每个点对应的线 即 竖向的网格线
xAxis.enableGridDashedLine(2, 2, 2); //竖线 虚线样式 lineLength控制虚线段的长度 spaceLength控制线之间的空间
xAxis.setLabelRotationAngle(40f);//设置x轴标签的旋转角度
String[] timearray = xLabelListDataZlfl.toArray(new String[xLabelListDataZlfl.size()]);
xAxis.setValueFormatter(new IndexAxisValueFormatter(timearray));
YAxis yAxis = binding.linechart.getAxisRight();
yAxis.setEnabled(false);
//设置左边Y轴的样式
YAxis axisLeft = binding.linechart.getAxisLeft();
axisLeft.setTextSize(12);
axisLeft.setAxisMinimum((float) minZlfl);
axisLeft.setAxisMaximum((float) maxZlfl);
//设置字体颜色
//axisLeft.setTextColor(Color.parseColor("#FC863E"));
// float ratio = (float) xLabelListDataZlfl.size() / (float) 10;
// if (ratio < 1) {
// ratio = 1.0f;
// }
//显示的时候是按照多大的比率缩放显示,1f表示不放大缩小
//着重说明一下下面代码的用途
/**
* 0
*
*
*/
// binding.linechart.zoom(0f, 1f, 0, 0);
// binding.linechart.zoom(ratio, 1f, 0, 0);
// //设置为不可缩放
// binding.linechart.setScaleEnabled(false);
// //设置为可左右滑动
// binding.linechart.setDragEnabled(true);
}
private void renderZqpl(){
xLabelListDataZqpl.clear();
maxZqpl=0;
List<Entry> entriesXZqpl = new ArrayList<>();
List<Entry> entriesYZqpl = new ArrayList<>();
List<Entry> entriesZZqpl = new ArrayList<>();
for (int i = 0; i < deviceAlarmDataList.size(); i++) {
try {
DeviceAlarmInfoLineChartBean.DeviceVibrationMonitoringData item = deviceAlarmDataList.get(i);
entriesXZqpl.add(new Entry(i, Float.parseFloat(item.getxFrequency().toString())));
entriesYZqpl.add(new Entry(i, Float.parseFloat(item.getyFrequency().toString())));
entriesZZqpl.add(new Entry(i, Float.parseFloat(item.getzFrequency().toString())));
Date date = sdf.parse(item.getDeviceTime());
if(date != null){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
xLabelListDataZqpl.add(sdfHourMinute.format(calendar.getTime()));
}
if(item.getxFrequency()!=null&& item.getxFrequency() >maxZqpl){
maxZqpl=item.getxFrequency();
}
if(item.getyFrequency()!=null&& item.getyFrequency() >maxZqpl){
maxZqpl=item.getyFrequency();
}
if(item.getzFrequency()!=null&& item.getzFrequency() >maxZqpl){
maxZqpl=item.getzFrequency();
}
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
showLog(String.valueOf(deviceAlarmDataList.size()));
showLog("maxZqpl:"+String.valueOf(maxZqpl));
if(maxZqpl<2){
maxZqpl=2;
}else if(maxZqpl>=2&&maxZqpl<4){
maxZqpl=4;
}else if(maxZqpl>=4&&maxZqpl<6){
maxZqpl=6;
}else if(maxZqpl>=6&&maxZqpl<8){
maxZqpl=8;
}else if(maxZqpl>=8&&maxZqpl<10){
maxZqpl=12;
}else if(maxZqpl>=12&&maxZqpl<20){
maxZqpl=20;
}else if(maxZqpl>=20&&maxZqpl<40){
maxZqpl=45;
}else if(maxZqpl>=40&&maxZqpl<60){
maxZqpl=70;
}else if(maxZqpl>=60&&maxZqpl<75){
maxZqpl=90;
}else if(maxZqpl>=75&&maxZqpl<90){
maxZqpl=105;
}else if(maxZqpl>=90&&maxZqpl<105){
maxZqpl=120;
}else if(maxZqpl>=105&&maxZqpl<120){
maxZqpl=135;
}else{
maxZqpl=maxZqpl+100;
}
showLog("maxZqpl:"+String.valueOf(maxZqpl));
renderDataZqpl(entriesXZqpl,entriesYZqpl,entriesZZqpl);
}
private void renderDataZqpl(List<Entry> entriesXZqpl,List<Entry> entriesYZqpl,List<Entry> entriesZZqpl) {
// 清除所有数据
binding.linechart.clear();
binding.linechart.invalidate(); // 重绘视图
List<ILineDataSet> sets = new ArrayList<>();
showLog(GsonString(entriesXZqpl));
showLog(GsonString(entriesYZqpl));
showLog(GsonString(entriesZZqpl));
String deviceNameLineX = deviceName+"X轴最强频率";
LineDataSet dataSet1 = new LineDataSet(entriesXZqpl, deviceNameLineX);
dataSet1.setValueTextSize(12);
dataSet1.setValueTextColor(Color.parseColor("#ff8000"));
dataSet1.setMode(LineDataSet.Mode.CUBIC_BEZIER);
dataSet1.setLineWidth(2);
//dataSet1.setCircleHoleRadius(3);
dataSet1.setDrawCircles(false); // 禁用圆点绘制
//dataSet1.enableDashedLine(5, 5, 0);
//dataSet1.setCircleColor(Color.parseColor("#ff8000"));
dataSet1.setColor(Color.parseColor("#ff8000"));
dataSet1.setDrawHighlightIndicators(false);
//dataSet1.setDrawFilled(true);
//dataSet1.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
dataSet1.setLineWidth(2);
dataSet1.setDrawValues(false);
sets.add(dataSet1);
String deviceNameLineY = deviceName+"Y轴最强频率";
LineDataSet dataSet2 = new LineDataSet(entriesYZqpl, deviceNameLineY);
dataSet2.setValueTextSize(12);
dataSet2.setValueTextColor(Color.parseColor("#0080ff"));
dataSet2.setMode(LineDataSet.Mode.CUBIC_BEZIER);
dataSet2.setLineWidth(2);
//dataSet2.setCircleHoleRadius(3);
dataSet2.setDrawCircles(false); // 禁用圆点绘制
//dataSet2.enableDashedLine(5, 5, 0);
//dataSet2.setCircleColor(Color.parseColor("#0080ff"));
dataSet2.setColor(Color.parseColor("#0080ff"));
dataSet2.setDrawHighlightIndicators(false);
//dataSet2.setDrawFilled(true);
//dataSet2.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
dataSet2.setLineWidth(2);
dataSet2.setDrawValues(false);
sets.add(dataSet2);
String deviceNameLineZ = deviceName+"Z轴最强频率";
LineDataSet dataSet3 = new LineDataSet(entriesZZqpl, deviceNameLineZ);
dataSet3.setValueTextSize(12);
dataSet3.setValueTextColor(Color.parseColor("#80ff00"));
dataSet3.setMode(LineDataSet.Mode.CUBIC_BEZIER);
dataSet3.setLineWidth(2);
//dataSet3.setCircleHoleRadius(3);//圆点大小
dataSet3.setDrawCircles(false); // 禁用圆点绘制
//dataSet3.enableDashedLine(5, 5, 0);//曲线间隔
//dataSet3.setCircleColor(Color.parseColor("#80ff00"));//圆点颜色
dataSet3.setColor(Color.parseColor("#80ff00"));//线颜色
dataSet3.setDrawHighlightIndicators(false);
//dataSet3.setDrawFilled(true);
//dataSet3.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
dataSet3.setLineWidth(2);
dataSet3.setDrawValues(false);
sets.add(dataSet3);
LineData lineData = new LineData(sets);
binding.linechart.setData(lineData);
binding.linechart.invalidate();
XAxis xAxis = binding.linechart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setAxisMinimum(0);//设置x轴最小
xAxis.setTextSize(12);
//xAxis.setTextColor(Color.parseColor("#FC863E"));
xAxis.setEnabled(true);//是否显示x轴是否禁用
xAxis.setDrawLabels(true); //设置x轴标签 即x轴上显示的数值
xAxis.setDrawGridLines(true);//是否设置x轴上每个点对应的线 即 竖向的网格线
xAxis.enableGridDashedLine(2, 2, 2); //竖线 虚线样式 lineLength控制虚线段的长度 spaceLength控制线之间的空间
xAxis.setLabelRotationAngle(40f);//设置x轴标签的旋转角度
String[] timearray = xLabelListDataZqpl.toArray(new String[xLabelListDataZqpl.size()]);
xAxis.setValueFormatter(new IndexAxisValueFormatter(timearray));
YAxis yAxis = binding.linechart.getAxisRight();
yAxis.setEnabled(false);
//设置左边Y轴的样式
YAxis axisLeft = binding.linechart.getAxisLeft();
axisLeft.setTextSize(12);
axisLeft.setAxisMinimum(0f);
axisLeft.setAxisMaximum((float) maxZqpl);
//设置字体颜色
//axisLeft.setTextColor(Color.parseColor("#FC863E"));
// float ratio = (float) xLabelListDataZqpl.size() / (float) 10;
// if (ratio < 1) {
// ratio = 1.0f;
// }
//显示的时候是按照多大的比率缩放显示,1f表示不放大缩小
//着重说明一下下面代码的用途
/**
* 0
*
*
*/
// binding.linechart.zoom(0f, 1f, 0, 0);
// binding.linechart.zoom(ratio, 1f, 0, 0);
// //设置为不可缩放
// binding.linechart.setScaleEnabled(false);
// //设置为可左右滑动
// binding.linechart.setDragEnabled(true);
}
private void renderFreq(){
xLabelListDataFreq.clear();
maxFreq=0;
List<Entry> entriesXFreq = new ArrayList<>();
List<Entry> entriesYFreq = new ArrayList<>();
List<Entry> entriesZFreq = new ArrayList<>();
for (int i = 0; i < deviceAlarmDataList.size(); i++) {
try {
DeviceAlarmInfoLineChartBean.DeviceVibrationMonitoringData item = deviceAlarmDataList.get(i);
entriesXFreq.add(new Entry(i, Float.parseFloat(item.getxFreq().toString())));
entriesYFreq.add(new Entry(i, Float.parseFloat(item.getyFreq().toString())));
entriesZFreq.add(new Entry(i, Float.parseFloat(item.getzFreq().toString())));
Date date = sdf.parse(item.getDeviceTime());
if(date != null){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
xLabelListDataFreq.add(sdfHourMinute.format(calendar.getTime()));
}
if(item.getxFreq()!=null&& item.getxFreq() >maxFreq){
maxFreq=item.getxFreq();
}
if(item.getyFreq()!=null&& item.getyFreq() >maxFreq){
maxFreq=item.getyFreq();
}
if(item.getzFreq()!=null&& item.getzFreq() >maxFreq){
maxFreq=item.getzFreq();
}
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
showLog(String.valueOf(deviceAlarmDataList.size()));
showLog("maxFreq:"+String.valueOf(maxFreq));
if(maxFreq<2){
maxFreq=2;
}else if(maxFreq>=2&&maxFreq<4){
maxFreq=4;
}else if(maxFreq>=4&&maxFreq<6){
maxFreq=6;
}else if(maxFreq>=6&&maxFreq<8){
maxFreq=8;
}else if(maxFreq>=8&&maxFreq<10){
maxFreq=12;
}else if(maxFreq>=12&&maxFreq<20){
maxFreq=20;
}else if(maxFreq>=20&&maxFreq<40){
maxFreq=45;
}else if(maxFreq>=40&&maxFreq<60){
maxFreq=70;
}else if(maxFreq>=60&&maxFreq<75){
maxFreq=90;
}else if(maxFreq>=75&&maxFreq<90){
maxFreq=105;
}else if(maxFreq>=90&&maxFreq<105){
maxFreq=120;
}else if(maxFreq>=105&&maxFreq<120){
maxFreq=135;
}else if(maxFreq>=120&&maxFreq<200){
maxFreq=200;
}else if(maxFreq>=200&&maxFreq<300){
maxFreq=300;
}else if(maxFreq>=300&&maxFreq<400){
maxFreq=400;
}else if(maxFreq>=400&&maxFreq<500){
maxFreq=500;
}else{
maxFreq=maxFreq+500;
}
showLog("maxFreq:"+String.valueOf(maxFreq));
renderDataFreq(entriesXFreq,entriesYFreq,entriesZFreq);
}
private void renderDataFreq(List<Entry> entriesXFreq,List<Entry> entriesYFreq,List<Entry> entriesZFreq) {
// 清除所有数据
binding.linechart.clear();
binding.linechart.invalidate(); // 重绘视图
List<ILineDataSet> sets = new ArrayList<>();
showLog(GsonString(entriesXFreq));
showLog(GsonString(entriesYFreq));
showLog(GsonString(entriesZFreq));
String deviceNameLineX = deviceName+"X轴FREQ对应幅值";
LineDataSet dataSet1 = new LineDataSet(entriesXFreq, deviceNameLineX);
dataSet1.setValueTextSize(12);
dataSet1.setValueTextColor(Color.parseColor("#ff8000"));
dataSet1.setMode(LineDataSet.Mode.CUBIC_BEZIER);
dataSet1.setLineWidth(2);
//dataSet1.setCircleHoleRadius(3);
dataSet1.setDrawCircles(false); // 禁用圆点绘制
//dataSet1.enableDashedLine(5, 5, 0);
//dataSet1.setCircleColor(Color.parseColor("#ff8000"));
dataSet1.setColor(Color.parseColor("#ff8000"));
dataSet1.setDrawHighlightIndicators(false);
//dataSet1.setDrawFilled(true);
//dataSet1.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
dataSet1.setLineWidth(2);
dataSet1.setDrawValues(false);
sets.add(dataSet1);
String deviceNameLineY = deviceName+"Y轴FREQ对应幅值";
LineDataSet dataSet2 = new LineDataSet(entriesYFreq, deviceNameLineY);
dataSet2.setValueTextSize(12);
dataSet2.setValueTextColor(Color.parseColor("#0080ff"));
dataSet2.setMode(LineDataSet.Mode.CUBIC_BEZIER);
dataSet2.setLineWidth(2);
//dataSet2.setCircleHoleRadius(3);
dataSet2.setDrawCircles(false); // 禁用圆点绘制
//dataSet2.enableDashedLine(5, 5, 0);
//dataSet2.setCircleColor(Color.parseColor("#0080ff"));
dataSet2.setColor(Color.parseColor("#0080ff"));
dataSet2.setDrawHighlightIndicators(false);
//dataSet2.setDrawFilled(true);
//dataSet2.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
dataSet2.setLineWidth(2);
dataSet2.setDrawValues(false);
sets.add(dataSet2);
String deviceNameLineZ = deviceName+"Z轴FREQ对应幅值";
LineDataSet dataSet3 = new LineDataSet(entriesZFreq, deviceNameLineZ);
dataSet3.setValueTextSize(12);
dataSet3.setValueTextColor(Color.parseColor("#80ff00"));
dataSet3.setMode(LineDataSet.Mode.CUBIC_BEZIER);
dataSet3.setLineWidth(2);
//dataSet3.setCircleHoleRadius(3);//圆点大小
dataSet3.setDrawCircles(false); // 禁用圆点绘制
//dataSet3.enableDashedLine(5, 5, 0);//曲线间隔
//dataSet3.setCircleColor(Color.parseColor("#80ff00"));//圆点颜色
dataSet3.setColor(Color.parseColor("#80ff00"));//线颜色
dataSet3.setDrawHighlightIndicators(false);
//dataSet3.setDrawFilled(true);
//dataSet3.setFillDrawable(new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.argb(127, 235, 170, 106), Color.parseColor("#00FA5544")}));
dataSet3.setLineWidth(2);
dataSet3.setDrawValues(false);
sets.add(dataSet3);
LineData lineData = new LineData(sets);
binding.linechart.setData(lineData);
binding.linechart.invalidate();
XAxis xAxis = binding.linechart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setAxisMinimum(0);//设置x轴最小
xAxis.setTextSize(12);
//xAxis.setTextColor(Color.parseColor("#FC863E"));
xAxis.setEnabled(true);//是否显示x轴是否禁用
xAxis.setDrawLabels(true); //设置x轴标签 即x轴上显示的数值
xAxis.setDrawGridLines(true);//是否设置x轴上每个点对应的线 即 竖向的网格线
xAxis.enableGridDashedLine(2, 2, 2); //竖线 虚线样式 lineLength控制虚线段的长度 spaceLength控制线之间的空间
xAxis.setLabelRotationAngle(40f);//设置x轴标签的旋转角度
String[] timearray = xLabelListDataFreq.toArray(new String[xLabelListDataFreq.size()]);
xAxis.setValueFormatter(new IndexAxisValueFormatter(timearray));
YAxis yAxis = binding.linechart.getAxisRight();
yAxis.setEnabled(false);
//设置左边Y轴的样式
YAxis axisLeft = binding.linechart.getAxisLeft();
axisLeft.setTextSize(12);
axisLeft.setAxisMinimum(0f);
axisLeft.setAxisMaximum((float) maxFreq);
//设置字体颜色
//axisLeft.setTextColor(Color.parseColor("#FC863E"));
// float ratio = (float) xLabelListDataZqpl.size() / (float) 10;
// if (ratio < 1) {
// ratio = 1.0f;
// }
//显示的时候是按照多大的比率缩放显示,1f表示不放大缩小
//着重说明一下下面代码的用途
/**
* 0
*
*
*/
// binding.linechart.zoom(0f, 1f, 0, 0);
// binding.linechart.zoom(ratio, 1f, 0, 0);
// //设置为不可缩放
// binding.linechart.setScaleEnabled(false);
// //设置为可左右滑动
// binding.linechart.setDragEnabled(true);
}
}
Loading…
Cancel
Save