c#图表y轴均匀缩放

c#图表y轴均匀缩放,c#,winforms,charts,C#,Winforms,Charts,我使用的是一个设备,它接收到4-20MA的压力读数,将其转换为电压,并在一定范围内进行缩放,然后将数据绘制在一个在线图中。我正在缩放y轴,并根据需要的范围大小,在运行时使用按钮调整y轴比例。换句话说,如果压力从0磅/平方英寸开始,然后一直跳到20000,我希望图表显示-100(最小值-只有当磅/平方英寸为0时,它才可见)到0,100,200,…,19800,19900,20000。但是如果压力是19743,那么刻度是“-43,43,143,…,19843,19943”,类似的。有没有办法改变这一

我使用的是一个设备,它接收到4-20MA的压力读数,将其转换为电压,并在一定范围内进行缩放,然后将数据绘制在一个在线图中。我正在缩放y轴,并根据需要的范围大小,在运行时使用按钮调整y轴比例。换句话说,如果压力从0磅/平方英寸开始,然后一直跳到20000,我希望图表显示-100(最小值-只有当磅/平方英寸为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个输入值),加上1000。因此,如果当前最大压力为19000 psi,图表应显示-100至200000

我对传入值的比较——名称是“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);
        }            
我的按钮在运行时增加和减少间隔。//间隔越高,越容易看到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();
    }
private void yValueSizeInc\u单击(对象发送方,事件参数e)
{
如果(chart1.ChartAreas[0].AxisY.Interval<50)
{
chart1.ChartAreas[0]。AxisY.Interval=50;
}
其他的
{
chart1.ChartAreas[0]。AxisY.Interval+=50;
}
Properties.Settings.Default.pressureInterval=
(int)chart1.ChartAreas[0].AxisY.Interval;
yValueSize.Text=chart1.ChartAreas[0]。AxisY.Interval.ToString();
}
私有void yValueSizeDec_单击(对象发送方,事件参数e)
{

如果(chart1.ChartAreas[0].AxisY.Interval)得到输入时,将其除以100,然后在整数变量上乘以100,例如,如果输入为2335,例如:int-input=2335;input=input/100*100;input完全等于2300。我不希望输入等于整数(xx00、x00、x0等)。只需y轴的值。数据需要精确,因此不能被操纵,因为随着时间的推移压力的持续损失很重要。所以只针对您的刻度进行操作。您将y轴间隔设置为50。为什么不设置为100?我希望刻度可调。我不知道最终用户将使用什么压力;它可以是3k、5k、10k或20k p因此,如果他们在20k下工作,50的间隔不会很好,但500的间隔会很好。100的间隔仍然是从(当前压力读数等于53)-53,0,53,153,253,353,…,等等。当你得到你的输入时,除以100,然后在一个整数变量上乘以100,例如,如果输入是2335,例如:int input=2335;input=input/100*100;input well=2300。我不希望输入等于一个整数(xx00,x00,x0,等等)。只需y轴的值。数据需要精确,因此不能被操纵,因为随着时间的推移压力的持续损失很重要。所以只针对您的刻度进行操作。您将y轴间隔设置为50。为什么不设置为100?我希望刻度可调。我不知道最终用户将使用什么压力;它可以是3k、5k、10k或20k p因此,如果他们在20k下工作,50的间隔不会很好,但500的间隔会很好。100的间隔仍然是从(当前压力读数等于53)-53,0,53,153,253,353,…,等等。
    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();
    }