繁体   English   中英

MPandroidchart 不同比例的双 YAxis

[英]MPandroidchart Double YAxis with different scales

我希望我的图表有两个不同比例的 YAxis,如图像。 如何更改每个轴的比例?

在此处输入图片说明

2.0.0-beta 版在周末发布了一个CombinedChart ,它允许在一个图表中绘制 Line-、Bar-、Scatter- 和 CandleData。 所以这个功能终于可用了

关于我在升级过程中发现的内容的一个说明,您不能简单地为每一个都添加数据集(),您必须生成单独的数据集类型(条形、线、散点等),然后将 SetData() 用于适当的类型,触发渲染。

这是示例代码

MPAndroidChart 库的作者在这里明确指出( MPChart - Scatter Chart 和 LineChart in same plot ),此功能尚不可用。 所以,我也在寻找更好的方法。

因此,您可以将两种不同的图表类型显示为一种,仍然使用这个库,只是通过重叠它们。

我已经这样做了,如下所示:
1. 编辑活动布局 xml,将 FrameLayout 作为图表容器。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    .......
    <FrameLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:id="@+id/root_view">
    </FrameLayout>
    .......
</LinearLayout>
  1. 现在,在 Activity 类中,构建图表对象并将它们附加到前一个容器:


    // construct the charts, as different objects
    // make sure to have valid Data Sets    
    LineChartItem lineChart = new LineChartItem(lineChartDataset, getApplicationContext());
    BarChartItem barChart = new BarChartItem(barChartDataset, getApplicationContext());

    // get the charts' container
    FrameLayout frameLayout = (FrameLayout) findViewById(R.id.root_view);

    // populate the container with the charts' views
    frameLayout.addView(lineChart.getView(0, null, getApplicationContext()));
    frameLayout.addView(barChart.getView(1, null, getApplicationContext()));

这种做法的优点/缺点
专业人士

  • 您可以使用 MPAndroidChart 获得更多组合图表。
    缺点
  • 您需要注意 X 和 Y 标签对齐。
  • 用户事件:只有上部(按 Z 顺序)图表视图将获得用户输入,因此您需要确保所有其他图表视图的行为方式相同(处理或忽略输入,例如缩放图表或值选择)。

    我希望能够快速发布具有此选项的优秀库。 提前感谢菲利普·贾霍达!

  • 就我而言,我会按照mpandroidcharts建议进行所有mpandroidcharts

    我仍然在“ y 轴右”和“ y 轴左”上获得相同的比例

    罪魁祸首是

        combinedChart.axisLeft?.axisMinimum = //some calculations
        combinedChart.axisLeft?.axisMaximum = //some calculations
        combinedChart.axisRight?.axisMinimum = //some calculations
        combinedChart.axisRight?.axisMaximum = //some calculations
    

    当您从条形图或折线图中复制完美的代码时,基本上是复制粘贴错误,在需要时设置轴的最小值和最大值。

    暂无
    暂无

    声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

     
    粤ICP备18138465号  © 2020-2024 STACKOOM.COM