同步图表或多个图表,例如Android中的Highcharts

时间:2017-01-04 07:50:06

标签: android charts highcharts mpandroidchart

我们怎样才能在Synchronized charts中实现Android

对于我的网页,我使用了Highcharts API。 Android有什么类似的东西吗?我检查过各种提到的here库,但没有找到符合要求的库。

我不想要像thisthis这样的组合图表。我正在寻找同步图表。

是否有符合要求的图书馆或我应该使用webView(这对我来说是最糟糕的情况)

是否可以使用MPAndroidChart

修改

结果图表应该与highcharts页面

中给出的图表类似

示例

enter image description here

更新

座右铭不只是绘制3个图表。目标是同步它们。同步意味着所有3个图表具有相同的x轴(值),在这些图表中的任意点单击时,应在所有图表中突出显示该特定点的图表。我确定我没有正确解释。请检查此link并将图表悬停

3 个答案:

答案 0 :(得分:2)

点击图表1获取X和Y点并在图表2上突出显示它们。与第二个图表相同。

    lineChart1.setOnChartValueSelectedListener(new OnChartValueSelectedListener()
    {
        @Override
        public void onValueSelected(Entry e, Highlight h)
        {
            lineChart2.highlightValue(e.getX(),e.getY(),0,false);
        }

        @Override
        public void onNothingSelected()
        {
        }
    });


    lineChart2.setOnChartValueSelectedListener(new OnChartValueSelectedListener()
    {
        @Override
        public void onValueSelected(Entry e, Highlight h)
        {
            lineChart1.highlightValue(e.getX(),e.getY(),0,false);
        }

        @Override
        public void onNothingSelected() {
        }
    });

注意将最后一个参数设置为false,以便它不会一次又一次地调用侦听器。如果未设置,则会导致死锁。

答案 1 :(得分:1)

sample app可以很好地展示您可以使用的功能"开箱即用"与MPAndroidChart。

正如您所看到的,ListView中有多个图表的示例似乎接近您的要求。

3 charts one on top of the other as per OP's requirement

同样,GitHub上提供了source code,供您检查并查看它是否具有可用的类和方法,以便您开箱即用。

与此同时,您应该明白,期望找到一个完全符合仅仅配置的不寻常要求的库通常是不现实的。免费和开源库通常提供扩展和定制,MPAndroidChart也不例外。作为一名专业的软件工程师,或者作为一名有抱负的软件工程师,您应该愿意并准备自己编程。

在您的特定情况下,您似乎想要在图表之间进行某种协调。因此,如果单击其中一个,则MarkerView将出现在DataSet中相同的xIndex上。

要尝试此操作,您首先要查看OnChartGestureListener的代码。可以使用event-driven programming获得解决方案。您将设置3个OnChartGestureListener实现,这些实现将使用事件将当前手势传输给中介,然后中介在其他两个图表上触发相同的手势。例如,在OnChartGestureListener内部有一个实现的方法叫做:

void onChartScale(MotionEvent var1, float var2, float var3);

您的实现看起来像这样:

@Override
void onChartScale(MotionEvent var1, float var2, float var3) {
    //transmit event to mediator 
    //handle event for this chart
}

如果这太难了,那么你必须在WebView内坚持使用Highcharts,因为你已经有了明确的建议。但是,请注意WebView内的性能不如使用直接渲染画布的库那样好。

简而言之,可能,虽然很难,但要使用MPAndroidChart完成您想要的任务,而不是#34;开箱即用的"解决方案可用。

答案 2 :(得分:-1)

您肯定可以使用MPAndroidCharts库。

转到1> 速度的LineChart(带图例,简单设计) 2 - ; 海拔,心脏

的LineChart(立方线)/(渐变填充)

使用gradientFill时,应用此选项消除虚线并画一条直线:

    lineDataSet.enableDashedLine(0f, 0f, 0f);
    lineDataSet.enableDashedHighlightLine(0f, 0f, 0f);