Java 如何设置mpandroidchart条形图中条形图(y轴)的比例

Java 如何设置mpandroidchart条形图中条形图(y轴)的比例,java,android,mpandroidchart,Java,Android,Mpandroidchart,我刚刚开始学习为Android编写代码和开发 现在,我正在尝试做这样的事情: 但是,我在MPAndroidChart库中找不到参数或方法来设置条形图(或我正在使用的水平条形图)中条形图的比例。条形图中的条形图只是自动决定其比例。我想要的是一个固定的Y轴最大范围,并且条形图中的比例根据其值而变化 另一个问题是,我无法摆脱每个酒吧的标签。我写 barChart.setDrawValueAboveBar(false); 但该条的右边仍然有一个值 包含条形图的片段的屏幕截图: 这是完

我刚刚开始学习为Android编写代码和开发

现在,我正在尝试做这样的事情: 但是,我在MPAndroidChart库中找不到参数或方法来设置条形图(或我正在使用的水平条形图)中条形图的比例。条形图中的条形图只是自动决定其比例。我想要的是一个固定的Y轴最大范围,并且条形图中的比例根据其值而变化

另一个问题是,我无法摆脱每个酒吧的标签。我写

        barChart.setDrawValueAboveBar(false);
但该条的右边仍然有一个值

包含条形图的片段的屏幕截图:

这是完整的代码

public class MainFragment extends android.support.v4.app.Fragment{
public MainFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.main_fragment, container, false);

    HorizontalBarChart barChart = (HorizontalBarChart)rootView.findViewById(R.id.time_chart);

    ArrayList<BarEntry> vals = new ArrayList<BarEntry>();

    BarEntry val = new BarEntry(0.20f,0);
    vals.add(val);

    BarDataSet setTime = new BarDataSet(vals,"time used");
    setTime.setAxisDependency(YAxis.AxisDependency.LEFT);
    setTime.setColor(R.color.colorAccent);

    ArrayList<String> xVals = new ArrayList<String>();
    xVals.add("1");

    BarData data = new BarData(xVals, setTime);
    barChart.setData(data);
    barChart.setBackgroundColor(ContextCompat.getColor(rootView.getContext(),R.color.chartBackGround));
    barChart.setDrawValueAboveBar(false);
    barChart.setDrawGridBackground(false);
    barChart.setDrawBarShadow(true);
    barChart.setDescription("");
    barChart.setVisibleYRangeMaximum(1.0f,barChart.getAxisLeft().getAxisDependency());

    barChart.getLegend().setEnabled(false);
    barChart.getXAxis().setEnabled(false);
    barChart.getXAxis().setDrawLabels(false);
    barChart.getAxisRight().setEnabled(false);
    barChart.getAxisLeft().setEnabled(false);
    barChart.getAxisLeft().setAxisMaxValue(1.0f);
    barChart.getAxisLeft().setAxisMinValue(0);
    barChart.getAxisLeft().setDrawLabels(false);

    barChart.invalidate();

    return rootView;
}
public类MainFragment扩展了android.support.v4.app.Fragment{
公共MainFragment(){}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.main_碎片,容器,假);
HorizontalBarChart barChart=(HorizontalBarChart)rootView.findViewById(R.id.time_chart);
ArrayList VAL=新的ArrayList();
巴伦特里山谷=新巴伦特里(0.20f,0);
val.add(val);
BarDataSet setTime=新的BarDataSet(VAL,“使用的时间”);
setTime.setAxisDependency(YAxis.AxisDependency.LEFT);
setTime.setColor(R.color.colorAccent);
ArrayList xVals=新的ArrayList();
xVals.添加(“1”);
BarData数据=新的BarData(xVAL,设置时间);
条形图.设置数据(数据);
setBackgroundColor(ContextCompat.getColor(rootView.getContext(),R.color.chartBackGround));
条形图。设置条形图上方的DrawValues(假);
barChart.setDrawGridBackground(假);
柱状图。SetDrableShadow(真);
条形图。设置说明(“”);
SetVisibleRangeMaximum(1.0f,barChart.getAxisLeft().getAxisDependency());
barChart.getLegend().setEnabled(false);
barChart.getXAxis().setEnabled(false);
getXAxis().setDrawLabels(false);
barChart.getAxisRight().setEnabled(false);
barChart.getAxisLeft().setEnabled(false);
barChart.getAxisLeft().setAxisMaxValue(1.0f);
barChart.getAxisLeft().setAxisMinValue(0);
getAxisleet().setDrawLabels(false);
barChart.invalidate();
返回rootView;
}
}

这是我的color.xml

<resources>
<color name="colorPrimary">#607d8b</color>
<color name="colorPrimaryDark">#455a64</color>
<color name="colorAccent">#64ffda</color>
<color name="windowBackground">#ffffff</color>
<color name="chartBackGround">#ffffff</color>
<color name="colorTransparent">#00ffffff</color>

#607d8b
#455a64
#64ffda
#ffffff
#ffffff
#00ffffff

谢谢你的帮助!!我在任何地方都找不到这个问题的答案。

尝试使用:

YAxis leftAxis = chart.getAxisLeft();
leftAxis.setAxisMaxValue(maxValue);
这将为您提供一个固定的最大值

如果要清除标签,请尝试:

setDrawLabels(false)
此方法可应用于任一轴,具体取决于要跳过的标签

您需要的所有信息都可以在中找到

编辑:使用此选项删除值

setTime.setDrawValues(false);
在您的评论中,您还询问了如何更改数据集的颜色。为此,请使用以下命令:

setTime.setColor(Color.CYAN);
尝试使用:

YAxis leftAxis = chart.getAxisLeft();
leftAxis.setAxisMaxValue(maxValue);
这将为您提供一个固定的最大值

如果要清除标签,请尝试:

setDrawLabels(false)
此方法可应用于任一轴,具体取决于要跳过的标签

您需要的所有信息都可以在中找到

编辑:使用此选项删除值

setTime.setDrawValues(false);
在您的评论中,您还询问了如何更改数据集的颜色。为此,请使用以下命令:

setTime.setColor(Color.CYAN);

非常感谢。但是,标签问题没有得到解决…标签在条上,而不是轴上。我试过了,但没有成功。只是好奇,为什么要声明另一个YAxis对象来设置maxValue?我可以写barChart.getAxisLeft.setAxisMaxValue()吗?是的,你绝对可以使用
barChart.getAxisLeft
。这只是另一种方式。关于标签在吧台上的问题,你可以分享一下它的屏幕截图和一些代码吗?如果你的问题还没有解决,请提供更多细节。如果解决了,那么请考虑接受答案,以便这个问题可以从未回答的问题列表中删除。我刚刚编辑了这个问题,包括了完整的代码和一个截图(截图在链接中,因为我还不能嵌入图片)。这里的另一个问题是,即使我将整个数据集的颜色设置为colorAccent,即青色,图形仍使用默认颜色。请选中edit以删除这些值。我还添加了一个编辑来设置颜色。如果这样做不起作用,或者你有任何其他问题,请告诉我。谢谢!但是,标签问题没有得到解决…标签在条上,而不是轴上。我试过了,但没有成功。只是好奇,为什么要声明另一个YAxis对象来设置maxValue?我可以写barChart.getAxisLeft.setAxisMaxValue()吗?是的,你绝对可以使用
barChart.getAxisLeft
。这只是另一种方式。关于标签在吧台上的问题,你可以分享一下它的屏幕截图和一些代码吗?如果你的问题还没有解决,请提供更多细节。如果解决了,那么请考虑接受答案,以便这个问题可以从未回答的问题列表中删除。我刚刚编辑了这个问题,包括了完整的代码和一个截图(截图在链接中,因为我还不能嵌入图片)。这里的另一个问题是,即使我将整个数据集的颜色设置为colorAccent,即青色,图形仍使用默认颜色。请选中edit以删除这些值。我还添加了一个编辑来设置颜色。如果这两种方法都不起作用,或者您有任何其他问题,请告诉我。