C#图表Y轴均匀缩放

时间:2019-05-16 16:46:58

标签: c# winforms charts

我正在使用一种设备,该设备会在4-20MA中接收压力读数,将其转换为电压并在一定范围内进行缩放,然后将数据实时绘制在折线图中。我正在缩放y轴,并有适当的按钮可以在运行时根据需要的范围调整y轴的比例。因此,换句话说,如果压力从0 psi开始,然后一直跳到20,000,我希望图表显示-100(最小值-仅在PSI为0时可见)到0、100、200, ...,19800,19900,20000。但是,如果压力为19743,则刻度为“ -43,43,143,...,19843,19943”。有没有办法改变它,使其仅计入“数百”之类的数字?

我的y轴间隔跳了50,因此该轴可以走0、50、100,...或0、100、200等,依此类推(如果需要,一次可以跳500 psi) 。但是我只想用y轴数字显示整个数百个,如果那是有道理的。

我的最大y值是最大传入值(我正在比较3个输入值),然后加上1,000。因此,如果当前最大压力为19,000 psi,则图表应显示-100至20,0000。

我对输入值的比较-名称为“ RawIn#”,但这些名称已经缩放。我知道错误的变量命名。

        if (rawIn0 > rawIn1)
        {
            maxY = Convert.ToInt32(rawIn0);
        }
        else if (rawIn1 > rawIn0)
        {
            maxY = Convert.ToInt32(rawIn1);
        }
        if (maxY < rawIn2)
        {
            maxY = Convert.ToInt32(rawIn2);
        }

        if (maxY > absoluteMaxY)
        {
            absoluteMaxY = maxY;
        }

        if (rawIn0 > rawIn1)
        {
            minY = Convert.ToInt32(rawIn1);
        }
        else if (rawIn1 > rawIn0)
        {
            minY = Convert.ToInt32(rawIn0);
        }
        if (minY > rawIn2)
        {
            minY = Convert.ToInt32(rawIn2);
        }            

当前缩放图表的方式。 MinY始终为0。因此最小值= -100。

        chart1.ChartAreas[0].AxisY.Maximum = absoluteMaxY + 1000;
        chart1.ChartAreas[0].AxisY.Minimum = minY - 100;

运行时我的按钮可以增加和减少间隔。 //间隔越大,越容易查看带有较少y轴线的整个图表。

    private void yValueSizeInc_Click(object sender, EventArgs e)
    {
        if (chart1.ChartAreas[0].AxisY.Interval < 50)
        {
            chart1.ChartAreas[0].AxisY.Interval = 50;
        }
        else
        {
            chart1.ChartAreas[0].AxisY.Interval += 50;
        }
        Properties.Settings.Default.pressureInterval = 
        (int)chart1.ChartAreas[0].AxisY.Interval;
        yValueSize.Text = chart1.ChartAreas[0].AxisY.Interval.ToString();
    }

    private void yValueSizeDec_Click(object sender, EventArgs e)
    {
        if (chart1.ChartAreas[0].AxisY.Interval <= 50)
        {
            chart1.ChartAreas[0].AxisY.Interval = 50;
        }
        else
        {
            chart1.ChartAreas[0].AxisY.Interval -= 50;
        }
        Properties.Settings.Default.pressureInterval = (int) 
        chart1.ChartAreas[0].AxisY.Interval;
        yValueSize.Text = chart1.ChartAreas[0].AxisY.Interval.ToString();
    }

Pressure count can be seen not uniform

0 个答案:

没有答案