MPandroidchart Double YAxis具有不同的比例

时间:2015-01-09 17:26:19

标签: android axis-labels mpandroidchart

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

enter image description here

3 个答案:

答案 0 :(得分:5)

Version 2.0.0-beta周末以CombinedChart发布,允许在一个图表中绘制Line-,Bar-,Scatter-和CandleData。所以该功能最终可用

关于我在升级期间发现的内容的一个注意事项,你不能简单地为每一个添加dataSet(),你必须生成各个DataSet类型(Bar,Line,Scatter等),然后使用SetData()适当的类型,以触发渲染。

这是example code

答案 1 :(得分:4)

MPAndroidChart库的作者在此明确指出(MPChart - Scatter Chart and 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类中,构建图表对象并将它们附加到上一个容器:
  2. 
    
        // 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()));
    
    
    对于这种做法,

    PROs / CONs
    赞成

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

    我希望快速发布这个有这个选项的优秀文库。提前谢谢Philipp Jahoda!

答案 2 :(得分:0)

就我而言,我会按照mpandroidcharts

的建议进行操作

仍然在“ y轴右”和“ y轴左

上获得相同的比例

罪魁祸首是

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

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