Java 如何在折线图中留出空白?

Java 如何在折线图中留出空白?,java,android,kotlin,mpandroidchart,linechart,Java,Android,Kotlin,Mpandroidchart,Linechart,我正在使用Android应用程序中的Library,我正在绘制一个如下图所示的折线图 有时我的示例中的一些条目(值)被认为是无效的。我希望将这些值表示为一个空白,在最后两个有效条目之间绘制,如 有人帮忙吗 这是可以做到的,但你需要组合图表,多行就可以了。要在哪里中断第一个数据集,在哪里结束第一个数据集,从哪里重新开始开始第二个数据集 下面是一个例子: import android.graphics.Color; import android.os.Bundle; import android.

我正在使用Android应用程序中的Library,我正在绘制一个如下图所示的折线图

有时我的示例中的一些条目(值)被认为是无效的。我希望将这些值表示为一个空白,在最后两个有效条目之间绘制,如


有人帮忙吗

这是可以做到的,但你需要组合图表,多行就可以了。要在哪里中断第一个数据集,在哪里结束第一个数据集,从哪里重新开始开始第二个数据集

下面是一个例子:

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import com.github.mikephil.charting.charts.CombinedChart;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
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.data.CombinedData;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.formatter.IndexAxisValueFormatter;
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);

    CombinedChart combinedChart = (CombinedChart) findViewById(R.id.chart1);
    CombinedData data = new CombinedData();
    data.setData(barData());
    data.setData(lineData());
    combinedChart.setData(data);

    // xAxis customization
    XAxis xAxis = combinedChart.getXAxis();

    // Following code have no effect but you can change it if required
    xAxis.setGranularity(1f);
    xAxis.setGranularityEnabled(true);
    xAxis.setCenterAxisLabels(false);
    xAxis.setDrawGridLines(false);

    // Setting maximum limit of xAxis
    xAxis.setAxisMaximum(barData().getEntryCount());

    // Setting position of xAxis
    xAxis.setPosition(XAxis.XAxisPosition.BOTH_SIDED);

    // This is used to fix bar width of first bar
    xAxis.setSpaceMin(barData().getBarWidth() / 2f);
    xAxis.setSpaceMax(barData().getBarWidth() / 2f);

    // Setting labels to xAxis
    xAxis.setValueFormatter(new IndexAxisValueFormatter(getXAxisValues()));

}

// creating list of x-axis values 
private ArrayList<String> getXAxisValues()
{
    ArrayList<String> labels = new ArrayList<String> ();

    labels.add( "JAN");
    labels.add( "FEB");
    labels.add( "MAR");
    labels.add( "APR");
    labels.add( "MAY");
    labels.add( "JUN");
    return labels; 
}

// this method is used to create data for line graph 
public LineData lineData()
{
    ArrayList<Entry> line = new ArrayList<Entry> ();
    line.add(new Entry(0, 10));
    line.add(new Entry(1, 11));
    line.add(new Entry(2, 12));
    line.add(new Entry(3, 14));
    line.add(new Entry(4, 18));
    line.add(new Entry(5, 31));

    LineDataSet lineDataSet = new LineDataSet(line, "Brand 2");
    lineDataSet.setAxisDependency(YAxis.AxisDependency.LEFT);
    lineDataSet.setColors(ColorTemplate.COLORFUL_COLORS);
    lineDataSet.setCircleRadius(5);

    // set this to false to disable the drawing of highlight indicator (lines)
    lineDataSet.setDrawHighlightIndicators(true);
    lineDataSet.setHighLightColor(Color.RED);
    LineData lineData = new LineData(lineDataSet);
    return lineData;
}

// this method is used to create data for Bar graph 
public BarData barData()
{
    ArrayList<BarEntry> group1 = new ArrayList<BarEntry>();
    group1.add(new BarEntry(0, 3));
    group1.add(new BarEntry(1, 1));
    group1.add(new BarEntry(2, 4));
    group1.add(new BarEntry(3, 7));
    group1.add(new BarEntry(4, 3));
    group1.add(new BarEntry(5, 8));

    BarDataSet barDataSet = new BarDataSet(group1, "Brand 1");
    barDataSet.setAxisDependency(YAxis.AxisDependency.RIGHT);
    //barDataSet.setColor(Color.rgb(0, 155, 0));
    barDataSet.setColors(ColorTemplate.COLORFUL_COLORS);

    BarData barData = new BarData(barDataSet);
    //        barData.setBarWidth(0.9f);

    return barData;
}
} 
导入android.graphics.Color;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入com.github.mikephil.charting.charts.CombinedChart;
导入com.github.mikephil.charting.components.XAxis;
导入com.github.mikephil.charting.components.YAxis;
导入com.github.mikephil.charting.data.BarData;
导入com.github.mikephil.charting.data.BarDataSet;
导入com.github.mikephil.charting.data.BarEntry;
导入com.github.mikephil.charting.data.CombinedData;
导入com.github.mikephil.charting.data.Entry;
导入com.github.mikephil.charting.data.LineData;
导入com.github.mikephil.charting.data.LineDataSet;
导入com.github.mikephil.charting.formatter.IndexAxisValueFormatter;
导入com.github.mikephil.charting.utils.ColorTemplate;
导入java.util.ArrayList;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CombinedChart CombinedChart=(CombinedChart)findViewById(R.id.chart1);
CombinedData=新CombinedData();
data.setData(barData());
data.setData(lineData());
组合图表。设置数据(数据);
//xAxis定制
XAxis XAxis=combinedChart.getXAxis();
//以下代码无效,但您可以根据需要进行更改
xAxis.setGranularity(1f);
xAxis.setGranularityEnabled(真);
xAxis.setCenterAxisLabels(false);
xAxis.setDrawGridLines(false);
//设置xAxis的最大限制
setAxisMaximum(barData().getEntryCount());
//xAxis的设置位置
xAxis.setPosition(xAxis.XAxisPosition.两侧);
//这用于固定第一根钢筋的钢筋宽度
xAxis.setSpaceMin(barData().getBarWidth()/2f);
xAxis.setSpaceMax(barData().getBarWidth()/2f);
//将标签设置为xAxis
setValueFormatter(新的IndexAxisValueFormatter(getXaxiValues());
}
//创建x轴值列表
私有ArrayList GetXaxiValues()
{
ArrayList标签=新的ArrayList();
标签。添加(“一月”);
标签。添加(“二月”);
标签。添加(“MAR”);
标签。添加(“APR”);
标签。添加(“可能”);
标签。添加(“JUN”);
退货标签;
}
//此方法用于为折线图创建数据
公共LineData LineData()
{
ArrayList行=新的ArrayList();
行。添加(新条目(0,10));
行。添加(新条目(1,11));
添加(新条目(2,12));
行。添加(新条目(3,14));
添加(新条目(4,18));
行。添加(新条目(5,31));
LineDataSet LineDataSet=新的LineDataSet(行,“品牌2”);
lineDataSet.setAxisDependency(YAxis.AxisDependency.LEFT);
lineDataSet.setColor(ColorTemplate.Colorbid_COLORS);
lineDataSet.setCircleRadius(5);
//将此设置为false可禁用高亮显示指示器(线)的绘制
lineDataSet.setDrawHighlightIndicators(true);
lineDataSet.setHighLightColor(Color.RED);
LineData LineData=新的LineData(lineDataSet);
返回行数据;
}
//此方法用于为条形图创建数据
公共巴达塔巴达塔()
{
ArrayList group1=新的ArrayList();
第1组添加(新巴伦特里(0,3));
第1组添加(新巴伦特里(1,1));
第1组添加(新巴伦特里(2,4));
第1组添加(新巴伦特里(3,7));
第1组添加(新巴伦特里(4,3));
第1组添加(新巴伦特里(5,8));
BarDataSet BarDataSet=新的BarDataSet(第1组,“品牌1”);
setAxisDependency(YAxis.AxisDependency.RIGHT);
//setColor(Color.rgb(0,155,0));
设置颜色(ColorTemplate.Colorbid_COLORS);
BarData BarData=新的BarData(barDataSet);
//立根宽度(0.9f);
返回barData;
}
} 
在上面的示例中,用第二行数据替换barData,并从代码中删除相关内容,这样您就可以开始了。

有人可以试试这个

var colorArray = mutableListOf<Int>()
loop over elements
   obj= currObj[i]
   if(i+1 < size && obj[i] != null && obj[i+1] != null)
      colorArray.add(ContextCompat.getColor(mContext, R.color.your_color))
   else
      colorArray.add(ContextCompat.getColor(mContext, android.R.color.transparent))

val set1 = LineDataSet(values, "Dataset")
set1.setColors(colorArray)
var colorArray=mutableListOf()
环绕元件
obj=currObj[i]
如果(i+1
有什么解决办法吗?