我正在尝试使用 MPAndroidChart 在 android 中绘制水平条形图.请检查以下代码。
activity_mail.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.graphs.graphs2.MainActivity">
<com.github.mikephil.charting.charts.HorizontalBarChart
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
MainActivity.java
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.github.mikephil.charting.charts.HorizontalBarChart;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.utils.ColorTemplate;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
HorizontalBarChart chart = (HorizontalBarChart) findViewById(R.id.chart);
BarData data = new BarData(getDataSet());
chart.setData(data);
chart.animateXY(2000, 2000);
chart.invalidate();
}
private BarDataSet getDataSet() {
ArrayList<BarEntry> entries = new ArrayList();
entries.add(new BarEntry(4f, 0));
entries.add(new BarEntry(8f, 1));
entries.add(new BarEntry(6f, 2));
entries.add(new BarEntry(12f, 3));
entries.add(new BarEntry(18f, 4));
entries.add(new BarEntry(9f, 5));
BarDataSet dataset = new BarDataSet(entries,"hi");
return dataset;
}
private ArrayList<String> getXAxisValues() {
ArrayList<String> labels = new ArrayList();
labels.add("January");
labels.add("February");
labels.add("March");
labels.add("April");
labels.add("May");
labels.add("June");
return labels;
}
}
所以我需要做一些事情......
- 给条形图上色
- 移除引导线
- 在其左侧显示每个栏的描述
- 在条的末尾显示带有数字的“%”标记(例如:对于第一个条,显示
4%
而不是4
)
我也访问了这篇文章,图书馆的作者似乎已经完成了我要求的一些工作,所以这个图书馆可能是可能的。我该怎么做?
最佳答案
为条形着色:
BarDataSet#setColor(List<Integer>)
移除网格线:
chart.getXAxis().setDrawGridLines(false);
chart.getLeftAxis().setDrawGridLines(false);
显示说明:
给图表单独添加一个 TextView
将 % 添加到值中:
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value, AxisBase axis) {
return (int) Math.floor(value) + "%";
}
});
关于java - Android:用 `MPAndroidChart`绘制水平条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41564371/