【问题标题】:Formating the Line Chart in Windows Forms在 Windows 窗体中格式化折线图
【发布时间】:2015-05-28 12:18:53
【问题描述】:

我是 C# 编程和创建我的第一个 Windows 窗体应用程序的新手。我有两个一维数组,一个代表 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";
    } 

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

有没有人可以帮助我获得像我们在 Excel Graphs 中获得的输出?我尝试了很长时间,总是搞乱 X 轴的值。

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

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

【问题讨论】:

    标签: c# winforms charts


    【解决方案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;
    

    【讨论】:

    • 感谢 Jens,您的代码让我觉得我的所有数据都在字符串中。我只是在绘图之前将它们转换为双倍,当我设置最小值和最大值时,所有看起来都很好。
    • 哦,是的,使用字符串数据是错误的方式。很高兴它现在可以工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多