我正在使用一种设备,该设备会在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();
}