【问题标题】:How to add a Single Marker inside of an AreaChart populated with multiple DataSets?如何在填充有多个数据集的区域图中添加单个标记?
【发布时间】:2020-01-14 17:37:57
【问题描述】:

我正在尝试在 AreaChart 中添加一个标记,但没有成功。作为这张图片上的橙色圆点:

https://i.imgur.com/kd4LV0N.png

我正在使用 AnyChart 提供的示例代码,如下所示:

https://github.com/AnyChart/AnyChart-Android/blob/master/sample/src/main/java/com/anychart/sample/charts/AreaChartActivity.java

我尝试更改代码的某些部分,也添加这样的标记:

 DataEntry entry = new DataEntry();
        entry.setValue("test", 10);
        seriesData.add(entry);

        seriesData.add(new CustomDataEntry("Q2 2014", 17.982, 10.941, 9.835, 4.047, 2.841));
        seriesData.add(new CustomDataEntry("Q3 2014", 17.574, 8.659, 6.230, 2.627, 2.242));
        seriesData.add(new CustomDataEntry("Q4 2014", 19.75, 10.35, 6.292, 3.595, 2.136));
        seriesData.add(new CustomDataEntry("Q1 2015", 30.6, 17.2, 16.1, 5.4, 5.2));
        seriesData.add(new CustomDataEntry("Q2 2015", 21.316, 12.204, 16.823, 3.457, 4.210));
        seriesData.add(new CustomDataEntry("Q3 2015", 20.209, 10.342, 13.23, 2.872, 2.959));
        seriesData.add(new CustomDataEntry("Q4 2015", 21.773, 10.577, 12.518, 3.929, 2.704));
        seriesData.add(new CustomDataEntry("Q1 2016", 29.3, 17.9, 18.4, 4.8, 5.4));

        Set set = Set.instantiate();
        set.data(seriesData);

        Mapping seriesTest = set.mapAs("{ x: 'x', value: 'test' }");
        Mapping series1Data = set.mapAs("{ x: 'x', value: 'value' }");
        Mapping series2Data = set.mapAs("{ x: 'x', value: 'value2' }");
        Mapping series3Data = set.mapAs("{ x: 'x', value: 'value3' }");
        Mapping series4Data = set.mapAs("{ x: 'x', value: 'value4' }");
        Mapping series5Data = set.mapAs("{ x: 'x', value: 'value5' }");


        areaChart.marker(seriesTest); 

图表在 X 中插入一个值为 0 的新轴值,并将 Y 轴上的标记定位为 10 值,如 (0, 10)。我需要将标记放在任何 X 值中,例如 (15, 20) 或 (10, 10),同时正确绘制其他系列数据。

【问题讨论】:

    标签: java android marker area anychart


    【解决方案1】:

    我刚刚想出了怎么做。 其他系列必须以与我的标记相同的方式填充,但随后它们需要插入到不同的集合中。 例如:

      Cartesian areaChart = AnyChart.area();
      ...
    
      List<DataEntry> series1 = new ArrayList<>();
      series1.add(new ValueDataEntry("0.0", 1.0)));
      series1.add(new ValueDataEntry("1.0", 5.0)));  
      series1.add(new ValueDataEntry("2.0", 10.0)));
    
      Set setSerie = Set.instantiate();
      setSerie.data(series1);
      Mapping mapSerie = setSerie.mapAs("{x: 0, value: 1}");
    
      areaChart.area(mapSerie);
    
    

    并添加标记代码如下:

     ...
     List<DataEntry> markerData = new ArrayList<>();
     markerData.add(new ValueDataEntry("10.0", 10.0));
    
     Set setMarker = Set.instantiate();
     setMarker.data(markerData);
    
     Mapping mapMarker = setMarker.mapAs("{x: 0, value: 1}");
    
     areaChart.marker(mapMarker)
    
     ...
    
     anyChartView.setChart(areaChart); //shows the chart
    

    为了完成那一件事,那是漫长的一天。

    【讨论】:

    • 是的,你是绝对正确的,你使用的方法是最好的做法!
    猜你喜欢
    • 2016-03-27
    • 2019-09-25
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2023-03-24
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多