我有一个带有mpAndroidChart的HorizontalBarChart,并且在显示左侧但在图形内时遇到问题。看起来像这样:
标签在左侧被切掉。通过行完成
testchart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM_INSIDE)
在右侧,它工作流畅:
标签在图形内部并完整显示。这是通过以下行完成的:
testchart.getXAxis().setPosition(XAxis.XAxisPosition.TOP_INSIDE)
知道我在做什么错吗?
我的图表代码为:
BarData data = new BarData(new BarDataSet(entries, "Labeltest"));
data.setBarWidth(1); // set custom bar width
data.setDrawValues(false);
oBinding.testchart.setData(data);
oBinding.testchart.getXAxis().setLabelCount(labels.size());
oBinding.testchart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM_INSIDE);
oBinding.testchart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(labels));
// Hide grid lines
oBinding.testchart.getAxisLeft().setEnabled(false);
oBinding.testchart.getAxisRight().setEnabled(false);
// Hide graph description
oBinding.testchart.getDescription().setEnabled(false);
// Hide graph legend
oBinding.testchart.getLegend().setEnabled(false);
oBinding.testchart.invalidate(); // refresh
和XML:
<com.github.mikephil.charting.charts.HorizontalBarChart
android:id="@+id/testchart"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
答案 0 :(得分:0)
我遇到了同样的问题,我用这种方法解决了。
if (this.state.testObject.hasOwnProperty(property_name))
delete this.state.testObject.property_name
else {
var testObject = this.state.testObject
testObject[property_name] = some_value
this.setState({testObject: testObject})
}
这样,标签应绘制在条形图上。您可以使用chart.getXAxis().setPosition(XAxisPosition.BOTTOM_INSIDE)
类的setXOffset(...)
和setYOffset(...)
方法来重新放置标签。
如果您有更好的方法,请告诉我,谢谢
答案 1 :(得分:0)
试试这个:
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM_INSIDE);
为回应@andreas-zuercher 的评论而添加:
这种方式一直对我有用。这也使设置其他轴参数变得容易,例如:
xAxis.setDrawGridLines(true);
xAxis.setGranularity(1f);
xAxis.setGranularityEnabled(true);
final String[] xTime = time.split(",");
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return xTime[(int) value-1];
}
});
xAxis.setValueFormatter(new IndexAxisValueFormatter(xTime));