0

我想问是否可以将图表的负值着色为与正值不同的颜色。另外,我如何在值上输入标记,例如在 1、2、3..10 等处标记值!值范围从 -300000 到 700000

该图表在 C# 中,我有一个执行以下操作的按钮:

decimal[] numbers = new decimal[20];

for (int i = 0; i < 20; i++) 
{  
    numbers[i] = Convert.ToDecimal(dataGridView1[7, i].Value);  
    chart1.Series["Loan_Balance"].Points.AddXY(i+1, numbers[i]); } 
    chart1.Series["Loan_Balance"].Color = Color.Blue; 
    chart1.ChartAreas[0].AxisX.Interval = 1;
    chart1.ChartAreas[0].AxisY.Interval = 50000;
    chart1.Series["Loan_Balance"].ChartType = SeriesChartType.Range;
}

我还想问,为什么当我直接从数据库(datagridview)输入值时。例如在 for 循环中,不是创建一个数组并将值从 datagridview 转换为十进制,而是直接绘制它们,如下所示:

chart1.Series["Loan_Balance"].Points.AddXY(i, dataGridView2[i, 0].Value);

行为奇怪,chart1.ChartAreas[0].AxisY.Interval = 50000; 大多数时候它根本不起作用

如果您能帮助我,着色问题将更加重要,我将不胜感激。

在此先感谢您向 George Georgiou 致以最诚挚的问候

4

1 回答 1

1

您应该直接创建点而不是使用AddXY. 这使您可以完全控制点,包括它的颜色。所以,而不是:

chart1.Series["Loan_Balance"].Points.AddXY(i+1, numbers[i]);

利用:

var point = new DataPoint(i+1, numbers[i]);
point.Color = numbers[i] < 0 ? Color.Red : Color.Black; // or whatever logic
point.Label = numbers[i].ToString();                    // and so on
chart1.Series["Loan_Balance"].Points.Add(point);

您可以在DataPoint此处查看其他可用属性:http: //msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.datapoint.aspx

于 2012-05-21T06:04:25.937 回答