我是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值。
很遗憾,我无法发布任何图片:(
答案 0 :(得分:1)
如果要将特定范围的值投影到另一个范围,则需要在值之间使用线性插值。首先确定旧的最小值和最大值(MinX
和MaxX
)并定义新的限制(-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.Minimum
和XAxis.Maximum
以及XAxis.Interval
属性:
chart1.ChartAreas[0].AxisX.Minimum = -10;
chart1.ChartAreas[0].AxisX.Maximum = 10;
chart1.ChartAreas[0].AxisX.Interval = 1;