2014-03-31 8 views
0

작동하지 않으며 I은 X와 Y 하는 로그 스케일 필요 I는 두 가지 기능, X 축C# 차트 AxisY의 대수는 I 차트에 신호 응답을 그리려고

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; 
} 

그릴 응답 한 데시벨로 표현되고, I 값과 배열이 때 I는 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 또는 음수 값이있는 것입니다. 디버거에서 어떤 메소드가 호출 될 때 Abs_Min이 무엇인지 체크하십시오. 아마 거기에 제로 또는 마이너스 값이 들어있을 가능성이 있습니다.

+0

당신이 맞습니다, 덕분에 "음수 값을 그게하는 방법"에 관한 문제를 해결할 수있게되었습니다. – user2819934