如何根据日期为 Anychart 折线图设置比例

问题描述

我已经有任何图表了。我使用 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();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...