问题描述
我已经有任何图表了。我使用 ValueDataEntry 函数来设置 x & 值。我将 x 设置为日期时间字符串,格式为 DD/MM/YYYY HH:MM:SS(例如:12/03/2021 18:25:23)和每个 x 的心率值。
我想按月和周过滤数据,或者设置一个比例 (This is how i want the chart to look like if it has a scale),我可以在其中调整图表本身的比例。我有下面的代码片段。提前谢谢你:)
public void setLineChart() {
ArrayList<DataEntry> HeartRates = new ArrayList<>();
readings = LiveData.getReadingHashMap(); //Obtaining the values
if (readings.isEmpty()){
HeartRates.add(new ValueDataEntry(0,0));
Spo2s.add(new ValueDataEntry(0,0));
Temps.add(new ValueDataEntry(0,0));
}
else {
for(int i =0; i<readings.size(); i++){
keyReadings = readings.keySet().toArray();
HeartRate = Double.parseDouble(readings.get(keyReadings[i]).getHeartRate());
HeartRates.add(new ValueDataEntry(String.valueOf(keyReadings[i]),HeartRate));
}
}
cartesian = AnyChart.line();
cartesian.animation(true);
cartesian.padding(10d,20d,5d,20d);
cartesian.crosshair().enabled(true);
cartesian.crosshair()
.yLabel(true)
.ystroke((stroke) null,null,(String) null,(String) null);
cartesian.tooltip().positionMode(TooltipPositionMode.POINT);
cartesian.title("Heart Rate");
cartesian.yAxis(0).title("Heart Rate");
cartesian.xAxis(0).title("Time");
cartesian.xAxis(0).labels().padding(5d,5d);
cartesian.legend().enabled(true);
cartesian.legend().fontSize(13d);
cartesian.legend().padding(0d,0d,10d,0d);
cartesian.xScale();
series = cartesian.line(HeartRates);
series.name("Heart Rate (BPM)");
series.hovered().markers().enabled(true);
series.hovered().markers()
.type(MarkerType.CIRCLE)
.size(4d);
series.tooltip()
.position("right")
.offsetX(5d)
.offsetY(5d);
linechartHeartRate.setChart(cartesian);
解决方法
我找到了解决方案。
在我设置图形属性的代码中,我应该添加:
cartesian.xScroller(true);
OrdinalZoom xZoomHR = cartesian.xZoom();
xZoomHR.setToPointsCount(6,false,null);
xZoomHR.getStartRatio();
xZoomHR.getEndRatio();