[英]change the color column of the same series C#
我有一个 chart1 对象,并向其中添加了一个带有 n 列的系列。 我希望根据某些标准将列涂成红色或绿色。
我有以下 if 代码,但例如,即使我已经通过了 if,它们都被漆成绿色。
我已经使用了断点,如果它通过 if 和 else 但它没有按照我的意愿绘制列。
//maximum line
StripLine linea = new StripLine();
linea.StripWidth = 0;
linea.BorderColor = System.Drawing.Color.Red;
linea.BorderWidth = 2;
linea.BorderDashStyle = ChartDashStyle.Solid;
linea.IntervalOffset = 75;
linea.BackColor = System.Drawing.Color.Orange;
chart1.ChartAreas[0].AxisY.StripLines.Add(linea);
//minimum line
StripLine lineaM = new StripLine();
lineaM.StripWidth = 0;
lineaM.BorderColor = System.Drawing.Color.Green;
lineaM.BorderWidth = 2;
lineaM.BorderDashStyle = ChartDashStyle.Solid;
lineaM.IntervalOffset = 45;
lineaM.BackColor = System.Drawing.Color.Orange;
chart1.ChartAreas[0].AxisY.StripLines.Add(lineaM);
chart1.Series.Clear();
chart1.Series.Add("Series1");
chart1.Series["Series1"].BorderWidth = 3;
chart1.Titles.Clear();
chart1.Titles.Add("Total changes");
chart1.ChartAreas[0].AxisY.Maximum = 100;
for (int i = 0; i < dt.Rows.Count;i++)
{
string qty = dt.Rows[i]["PID"].ToString();
if (Convert.ToInt32(qty) > 45)//if it is greater than the minimum, the column must be red
{
chart1.Series["Series1"].XValueMember = "MES";
chart1.Series["Series1"].YValueMembers = "PID";
chart1.Series["Series1"].Color = Color.Red;
}
else //otherwise it must be green
{
chart1.Series["Series1"].XValueMember = "MES";
chart1.Series["Series1"].YValueMembers = "PID";
chart1.Series["Series1"].Color = Color.Green;
}
}
chart1.Series["Series1"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column;
//chart1.ChartAreas["ChartData"]
chart1.DataSource = dt;
chart1.DataBind();
有谁能够帮助我?
我不知道您正在使用的图表组件,但显然可以通过调用事件处理程序在数据绑定后自定义点。 看起来你必须做这样的事情:
private void CustomizeBarColours(object sender, System.EventArgs e)
{
for (int i = 0; i < dt.Rows.Count;i++)
{
string qty = dt.Rows[i]["PID"].ToString();
if (Convert.ToInt32(qty) > 45)//if it is greater than the minimum, the column must be red
{
chart1.Series["Series1"].Points[i].Color = Color.Red;
}
else //otherwise it must be green
{
chart1.Series["Series1"].Points[i].Color = Color.Green;
}
}
}
注意索引超出范围, i
用来索引Rows
和Points
的方式不是很优雅。
然后在您的 DataBind 之后,您可以添加:
chart1.Customize += CustomizeBarColours;
for循环中的这两行,你只需要做一次:
chart1.Series["Series1"].XValueMember = "MES";
chart1.Series["Series1"].YValueMembers = "PID";
然后你可以完全删除你的 for 循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.