C#Chart AxisY对数不起作用

时间:2014-03-31 16:15:15

标签: c# charts mschart logarithm

我试图在图表上绘制信号响应,我需要X和Y的对数标度。 我定义了两个函数,一个用于X轴

private void Configure_Axis_X(bool Logaritmic, double Maximum, double Minimum, double Interval)
{
    CH_EQ_Chart.ChartAreas[0].AxisX.IsLogarithmic = Logaritmic;
    CH_EQ_Chart.ChartAreas[0].AxisX.Minimum = Minimum;
    CH_EQ_Chart.ChartAreas[0].AxisX.Maximum = Maximum;
    CH_EQ_Chart.ChartAreas[0].AxisX.Interval = Interval;
    CH_EQ_Chart.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Black;
    CH_EQ_Chart.ChartAreas[0].AxisX.MajorGrid.LineDashStyle = Graph.ChartDashStyle.Dash;
}

和Y轴

private void Configure_Axis_Y(bool Logaritmic, double Maximum, double Minimum, double Interval)
{
    CH_EQ_Chart.ChartAreas[0].AxisY.IsLogarithmic = Logaritmic;
    CH_EQ_Chart.ChartAreas[0].AxisY.Minimum = Minimum;
    CH_EQ_Chart.ChartAreas[0].AxisY.Maximum = Maximum;
    CH_EQ_Chart.ChartAreas[0].AxisY.Interval = Interval;
    CH_EQ_Chart.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Black;
    CH_EQ_Chart.ChartAreas[0].AxisY.MajorGrid.LineDashStyle = Graph.ChartDashStyle.Dash;
}

对绘制的反应以分贝表示,我也希望对Y具有对数刻度。

当我有数组的值时,我得到最小值和最大值,我尝试使用上面的函数

double Abs_Max = Math.Max(y.Max(), z.Max());
double Abs_Min = Math.Min(y.Min(), z.Min());
Configure_Axis_Y(true, Abs_Max + Abs_Max/10, Abs_Min + Abs_Min/10, 20);

但是当我选择islogaritmic = true时会出现红叉,而不是图表。 如果我设置islogaritmic = false,则图片显示为正确。

1 个答案:

答案 0 :(得分:1)

红叉是图表在绘图过程中处理异常的方式。处理对数比例时最可能的罪魁祸首是一个或多个数据点具有零值或负值。检查调试器调用方法时Abs_Min是什么,因为它可能会以某种方式在其中获得零值或负值。