是否可以通过 Android 使用 MPAndroidChart 垂直绘制折线图值?
Is it possible to draw the line chart value vertically via Android use MPAndroidChart?
你知道为 x 轴设置背景颜色吗?
我在使用 x 轴进行自定义时遇到问题。
我想做这个。
set background color for x-axis
可能吗?
提前致谢
[编辑]
public class TargetZoneLineChart extends LineChart{
protected Paint mYAxisSafeZonePaint;
private List<TargetZone> mTargetZones;
@Override
protected void init() {
super.init();
mYAxisSafeZonePaint = new Paint();
mYAxisSafeZonePaint.setStyle(Paint.Style.FILL);
mTargetZones = new ArrayList<>();
}
@Override
protected void onDraw(Canvas canvas) {
for (TargetZone targetZone : mTargetZones) {
// prepare coordinates
float[] pts = new float[4];
pts[1] = targetZone.lowerLimit;
pts[3] = targetZone.upperLimit;
mLeftAxisTransformer.pointValuesToPixel(pts);
// draw
mYAxisSafeZonePaint.setColor(targetZone.color);
canvas.drawRect(mViewPortHandler.contentLeft(), pts[1], mViewPortHandler.contentRight(),
pts[3], mYAxisSafeZonePaint);
}
super.onDraw(canvas);
}
public void addTargetZone(TargetZone targetZone){
mTargetZones.add(targetZone);
}
public List<TargetZone> getTargetZones(){
return mTargetZones;
}
public static class TargetZone {
public final int color;
public final float lowerLimit;
public final float upperLimit;
public TargetZone(int color, float lowerLimit, float upperLimit) {
this.color = color;
this.lowerLimit = lowerLimit;
this.upperLimit = upperLimit;
}
}
它只有 yAxis ,如果我想成为 xAxis ,我该怎么办?
我用这个库来显示一周中的几天的图表。您可以根据您的要求使用和定制。根据您的要求,我完成了相同类型的任务。请参阅下面的方法并使用它。希望这可能会有所帮助you.If任何问题请评论。
私享乐趣setDayBarchart(){
val yVals1 = ArrayList<BarEntry>()
yVals1.add(BarEntry(0f, 6f))
yVals1.add(BarEntry(1f, 1f))
yVals1.add(BarEntry(2f, 2f))
yVals1.add(BarEntry(3f, 3f))
yVals1.add(BarEntry(4f, 5f))
yVals1.add(BarEntry(5f, 4f))
yVals1.add(BarEntry(6f, 7f))
val set1: BarDataSet
set1 = BarDataSet(yVals1, "")
set1.setColors(ColorTemplate.rgb("439CFF"))
val dataSets = ArrayList<IBarDataSet>()
dataSets.add(set1)
val data = BarData(dataSets)
data.setValueTextSize(7f)
data.barWidth = 0.5f
val formatter = object : ValueFormatter() {
// the labels that should be drawn on the XAxis
val quarter = arrayOf("Sun", "Mon", "Tue", "Wed","Thu","Fri","Sat")
override fun getAxisLabel(value: Float, axis: AxisBase?): String {
return quarter[value.toInt()]
}
}
val xAxis = root.barChart.xAxis
xAxis.granularity=1f // minimum axis-step (interval) is 1
xAxis.valueFormatter=formatter
xAxis.position=XAxis.XAxisPosition.BOTTOM
xAxis.textSize=10f
xAxis.textColor=Color.BLACK
xAxis.setDrawAxisLine(false)
root.barChart.setTouchEnabled(false)
root.barChart.data=data
root.barChart.animateXY(2000, 2000)
root.barChart.setFitBars(true)
root.barChart.getDescription().setText(" ")
}
您可以使用 Combined-Chart(在本例中为条形图和折线图),它在 MPAndroidChart 中可用。
您可以在以下库中找到该用法:
MPAndroidChart
你知道为 x 轴设置背景颜色吗? 我在使用 x 轴进行自定义时遇到问题。
我想做这个。
set background color for x-axis
可能吗?
提前致谢
[编辑]
public class TargetZoneLineChart extends LineChart{
protected Paint mYAxisSafeZonePaint;
private List<TargetZone> mTargetZones;
@Override
protected void init() {
super.init();
mYAxisSafeZonePaint = new Paint();
mYAxisSafeZonePaint.setStyle(Paint.Style.FILL);
mTargetZones = new ArrayList<>();
}
@Override
protected void onDraw(Canvas canvas) {
for (TargetZone targetZone : mTargetZones) {
// prepare coordinates
float[] pts = new float[4];
pts[1] = targetZone.lowerLimit;
pts[3] = targetZone.upperLimit;
mLeftAxisTransformer.pointValuesToPixel(pts);
// draw
mYAxisSafeZonePaint.setColor(targetZone.color);
canvas.drawRect(mViewPortHandler.contentLeft(), pts[1], mViewPortHandler.contentRight(),
pts[3], mYAxisSafeZonePaint);
}
super.onDraw(canvas);
}
public void addTargetZone(TargetZone targetZone){
mTargetZones.add(targetZone);
}
public List<TargetZone> getTargetZones(){
return mTargetZones;
}
public static class TargetZone {
public final int color;
public final float lowerLimit;
public final float upperLimit;
public TargetZone(int color, float lowerLimit, float upperLimit) {
this.color = color;
this.lowerLimit = lowerLimit;
this.upperLimit = upperLimit;
}
}
它只有 yAxis ,如果我想成为 xAxis ,我该怎么办?
我用这个库来显示一周中的几天的图表。您可以根据您的要求使用和定制。根据您的要求,我完成了相同类型的任务。请参阅下面的方法并使用它。希望这可能会有所帮助you.If任何问题请评论。
私享乐趣setDayBarchart(){
val yVals1 = ArrayList<BarEntry>()
yVals1.add(BarEntry(0f, 6f))
yVals1.add(BarEntry(1f, 1f))
yVals1.add(BarEntry(2f, 2f))
yVals1.add(BarEntry(3f, 3f))
yVals1.add(BarEntry(4f, 5f))
yVals1.add(BarEntry(5f, 4f))
yVals1.add(BarEntry(6f, 7f))
val set1: BarDataSet
set1 = BarDataSet(yVals1, "")
set1.setColors(ColorTemplate.rgb("439CFF"))
val dataSets = ArrayList<IBarDataSet>()
dataSets.add(set1)
val data = BarData(dataSets)
data.setValueTextSize(7f)
data.barWidth = 0.5f
val formatter = object : ValueFormatter() {
// the labels that should be drawn on the XAxis
val quarter = arrayOf("Sun", "Mon", "Tue", "Wed","Thu","Fri","Sat")
override fun getAxisLabel(value: Float, axis: AxisBase?): String {
return quarter[value.toInt()]
}
}
val xAxis = root.barChart.xAxis
xAxis.granularity=1f // minimum axis-step (interval) is 1
xAxis.valueFormatter=formatter
xAxis.position=XAxis.XAxisPosition.BOTTOM
xAxis.textSize=10f
xAxis.textColor=Color.BLACK
xAxis.setDrawAxisLine(false)
root.barChart.setTouchEnabled(false)
root.barChart.data=data
root.barChart.animateXY(2000, 2000)
root.barChart.setFitBars(true)
root.barChart.getDescription().setText(" ")
}
您可以使用 Combined-Chart(在本例中为条形图和折线图),它在 MPAndroidChart 中可用。
您可以在以下库中找到该用法: MPAndroidChart