在Windows窗体中格式化折线图

时间:2015-05-28 12:18:53

标签: c# winforms charts

我是c#编程和创建我的第一个Windows窗体应用程序的新手。我有两个1-D阵列,一个代表X轴值,另一个代表Y轴。

我正在尝试使用以下代码从它们创建图表。

public void drawgraph()
    {
        chart1.Series["Series1"].Name = MemsName;
        for (int i = 0; i < VmicArray.Length; i++)
        {
            chart1.Series[MemsName].Points.AddXY(VmicArray[i], SensitivityArray[i]);

        }

        chart1.ChartAreas[0].AxisX.Title = "Vmic Value";
        chart1.ChartAreas[0].AxisY.Title = "Sensitivity";
    } 

我得到了我在数组中的XAxis值(如-2.333333754或6.46870),我设置的间隔为5。 X轴的范围是-4到+8。

有没有人可以帮助我获得像Excel Graphs那样的输出?我一直在努力寻找X轴的价值。

我需要图表的XAxis值从-10到+10,间隔为1,并将Y值映射到图表上相应的X值。

很遗憾,我无法发布任何图片:(

1 个答案:

答案 0 :(得分:1)

如果要将特定范围的值投影到另一个范围,则需要在值之间使用线性插值。首先确定旧的最小值和最大值(MinXMaxX)并定义新的限制(-10,10)。

然后使用一个简单的公式来确定任意旧值的新x值。

double MinX = VmicArray.min;
double MaxX = VmicArray.Max;

double NewMin = -10;
double NewMax = 10;

for (i = 0; i <= VmicArray.Count - 1; i++) {
    // Linear interpolation     
    double NewX = VmicArray(i) / (MaxX - MinX) * (NewMax - NewMin) + NewMin;
}

在使用AddXY之前重新计算每个X值。

为了只更改每个轴的可见边界,您可以使用XAxis.MinimumXAxis.Maximum以及XAxis.Interval属性:

chart1.ChartAreas[0].AxisX.Minimum = -10;
chart1.ChartAreas[0].AxisX.Maximum = 10;
chart1.ChartAreas[0].AxisX.Interval = 1;