在winform里用chart画折线图时,需求要求有空值,比如X轴有500Hz,750Hz,1000Hz,2000Hz这几个点,Y轴对应的值是20,空值,25,25这几个值。由于第二个点是空值,造成折线图不是连续的。怎么设置当第二个点为空时,第1个和第三个点直接连起来,成为连续的折线图
遍历数据源补全值为空的列值为前一行和后一行的值相加/2就行了。代码如下
using System;
using System.Windows.Forms;
using System.Data;
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
var dt = new DataTable();
dt.Columns.Add("x");
dt.Columns.Add("y");
dt.Rows.Add("500Hz", "20");
dt.Rows.Add("750Hz", "");
dt.Rows.Add("1000Hz", "25");
dt.Rows.Add("2000Hz", "25");
for (int i = 1, j = dt.Rows.Count - 1; i < j; i++)
{
if (dt.Rows[i][1].ToString() == "")
{
dt.Rows[i][1] = (double.Parse(dt.Rows[i-1][1].ToString())+ double.Parse(dt.Rows[i +1][1].ToString()))/2;
}
}
chart1.DataSource = dt;
chart1.Series[0].XValueMember = "x";
chart1.Series[0].YValueMembers = "y";
}
}
}