![](https://img.haomeiwen.com/i2969709/169896f4e62a9a7d.png)
QQ截图20180301204355.png
public class ChartsActiviey extends AppCompatActivity implements OnChartValueSelectedListener {
protected BarChart mChart;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_charts);
mChart = (BarChart) findViewById(R.id.chart1);
mChart.setOnChartValueSelectedListener(this);
mChart.setDrawBarShadow(false);
// 设置value不在柱形图上面
mChart.setDrawValueAboveBar(false);
// 设置出现在图表右下角的说明文字。
mChart.getDescription().setEnabled(false);
//设置图表为空时应显示的文字。
mChart.setNoDataText("暂无数据");
//设置图表上最大可见绘制值标签的数量。这仅在setDrawValues()启用时才会生效。
mChart.setMaxVisibleValueCount(60);
mChart.setPinchZoom(false);
mChart.setDrawGridBackground(false);
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
// 设置网格显示
xAxis.setDrawGridLines(true);
xAxis.setGranularity(1f);
xAxis.setLabelCount(13);
// 设置条形图名称
xAxis.setValueFormatter(new DayAxisValueFormatter());
// 左侧数据
YAxis leftAxis = mChart.getAxisLeft();
leftAxis.setLabelCount(8, false);
leftAxis.setValueFormatter(new MyAxisValueFormatter());
leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
leftAxis.setSpaceTop(15f);
//设置自定义的最小值。如果设置,则根据提供的数据将不会自动计算该值。
leftAxis.setAxisMinimum(0f);
// 设置自定义的最大值。如果设置,则根据提供的数据将不会自动计算该值。
leftAxis.setAxisMaximum(100f);
// 不显示right的数据
mChart.getAxisRight().setEnabled(false);
// 图列
Legend l = mChart.getLegend();
l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
l.setDrawInside(false);
l.setForm(Legend.LegendForm.SQUARE);
l.setFormSize(9f);
l.setTextSize(14f);
l.setXEntrySpace(4f);
setData();
}
private void setData() {
ArrayList<BarEntry> barEntries = new ArrayList<>();
int max = 40;
int min = 10;
Random random = new Random();
for (int i = 0; i < 12; i++) {
int randomVal1 = random.nextInt(max) % (max - min + 1) + min;
int randomVal2 = random.nextInt(max) % (max - min + 1) + min;
int randomVal3 = random.nextInt(20) % (20 - 5 + 1) + 5;
barEntries.add(new BarEntry(i + 1, new float[]{randomVal1, randomVal2, randomVal3}));
}
BarDataSet set = new BarDataSet(barEntries, "");
set.setDrawIcons(false);
set.setColors(getColor());
set.setStackLabels(new String[]{"销量", "库存", "款式数"});
ArrayList<IBarDataSet> dataSets = new ArrayList<>();
dataSets.add(set);
BarData barData = new BarData(dataSets);
barData.setValueFormatter(new MyValueFormatter());
barData.setValueTextColor(Color.WHITE);
barData.setValueTextSize(10f);
mChart.setData(barData);
// 设置最多显示几个柱状图
mChart.setVisibleXRangeMaximum(6);
}
private int[] getColor() {
int stackSize = 3;
int[] colors = new int[stackSize];
for (int i = 0; i < colors.length; i++) {
colors[i] = ColorTemplate.MATERIAL_COLORS[i];
}
return colors;
}
@Override
public void onValueSelected(Entry e, Highlight h) {
}
@Override
public void onNothingSelected() {
}
}
public class DayAxisValueFormatter implements IAxisValueFormatter {
private String[] mMonths = new String[]{
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
@Override
public String getFormattedValue(float value, AxisBase axis) {
int curVlaue = (int) value;
return mMonths[curVlaue - 1];
}
}
public class MyAxisValueFormatter implements IAxisValueFormatter
{
@Override
public String getFormattedValue(float value, AxisBase axis) {
return (int)value + "%";
}
}
public class MyValueFormatter implements IValueFormatter {
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
return (int) value + "%";
}
}
网友评论