Объект axis ошибка автоматической настройки

I am having an error message in my SSRS Drill Down-Chart report:
«Axis object — Auto interval error due to invalid point values or axis minimum/maximum«

It displays only for the certain values in my report, but not for all of them.
Many others work just fine.
Can’t figure out this problem. I’d be appreciate if someone can advice.

Thanks.

asked Feb 28, 2018 at 23:07

Hell-1931's user avatar

Searching on Internet showed me that I and many others had had the same problem!

For me, when one of the X axis values was zero, it returned the Error you mentioned .

I am wondering whether it would be a comprehensive solution, but this worked fine for me.

Just after I added a ChartAreas, I set The miniumum values as follows.

    chart.ChartAreas.Add(chartArea);
    chart.ChartAreas[0].AxisX.Minimum = 0;
    chart.ChartAreas[0].AxisX2.Minimum = 0;
    chart.ChartAreas[0].AxisY.Minimum = 0;
    chart.ChartAreas[0].AxisY2.Minimum = 0;

You can do it for Maximum values, too.

answered Jul 19, 2018 at 6:38

Rezaeimh7's user avatar

Rezaeimh7Rezaeimh7

1,4572 gold badges23 silver badges40 bronze badges

alekartem

0 / 0 / 0

Регистрация: 12.04.2015

Сообщений: 4

1

Неверно рисуются графики

19.02.2017, 02:42. Показов 5050. Ответов 7

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте! Помогите, пожалуйста, разобраться, что я делаю не так. По заданию лабараторной у меня должно быть три кнопки, по нажатию на которые будут строиться три разные графика функции. И все как бы вышло, но только при повторном нажатии график меняется, и при нажатиях на другие кнопки появляются графики, но не такие, как должны быть. Подскажите в чем беда, пожалуйста. Заранее благодарен

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Graph
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        #region variables
        double x = 0;
        double y = 0;
        #endregion
        private void button1_Click(object sender, EventArgs e)
        {
            chart2.Series[0].Points.Clear();
            chart2.Series[0].LegendText = "Функция 1";
            chart2.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
            for (int i = 0; i < 1000; i++)
            {
                double y = ((Math.Pow(x, 2) - 1) * (Math.Pow(x, 2) - 4) * (Math.Pow(x, 2) + 9));
                chart2.Series[0].Points.AddXY(x, y);
                x = x + 0.001;
            }
        }//функция 1
 
        private void button2_Click(object sender, EventArgs e)
        {
            chart2.Series[0].Points.Clear();
            chart2.Series[0].LegendText = "Функция 2";
            chart2.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
            for (int i = 0; i < 1000; i++)
            {
                double y = ((3 - 2 * (1 / Math.Tan(x))) / (Math.Cos(x) * Math.Cos(x)));
                chart2.Series[0].Points.AddXY(x, y);
                x = x + 0.001;
            }
        }//функция 2
 
        private void button3_Click(object sender, EventArgs e)
        {
            chart2.Series[0].Points.Clear();
            chart2.Series[0].LegendText = "Функция 3";
            chart2.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
            for (int i = 0; i < 1000; i++)
            {
                double y = ((Math.Pow(x, 2)) / ((Math.Pow((x * Math.Sin(x) + Math.Cos(x)), 2))));
                chart2.Series[0].Points.AddXY(x, y);
                x = x + 0.001;
            }
        }//функция 3
 
        private void chart2_Click(object sender, EventArgs e)
        {
 
        }
    }
}



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

19.02.2017, 02:42

7

3434 / 2813 / 1249

Регистрация: 29.01.2016

Сообщений: 9,426

19.02.2017, 02:45

2



0



8927 / 4839 / 1885

Регистрация: 11.02.2013

Сообщений: 10,246

19.02.2017, 20:49

3

Цитата
Сообщение от alekartem
Посмотреть сообщение

повторном нажатии график меняется

Потому что x, y ты не сбрасываешь.

Цитата
Сообщение от alekartem
Посмотреть сообщение

при нажатиях на другие кнопки появляются графики, но не такие, как должны быть

Возможно в формулах. Возможно в том, что график строится на отрезке [0, 1]
В коде у тебя такие формулы

https://www.cyberforum.ru/cgi-bin/latex.cgi?y=left( {x}^{2}-1right)cdot left( {x}^{2}-4right)cdotleft( {x}^{2}+9right)\y=frac{3-2cdotfrac{1}{tan (x)}}{cos (x)cdotcos(x)}\y=frac{{x}^{2}}{{left( xcdotsin(x)+cos(x)right)}^{2}}



1



alekartem

0 / 0 / 0

Регистрация: 12.04.2015

Сообщений: 4

20.02.2017, 07:35

 [ТС]

4

На самом деле, обнулил x и y и все заработало, но появилась новая проблема. С функциями 1 и 3 все хорошо, но при обработке 2 появляется ошибка:

«Необработанное исключение типа «System.InvalidOperationException» в System.Windows.Forms.DataVisualization.dll

Дополнительные сведения: Объект Axis — ошибка автоматической настройки интервалов из-за недопустимого значения в точке либо минимального или максимального значения оси.»

новый код выглядит так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Graph
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        #region variables
        double x = 0;
        double y = 0;
        #endregion
        private void button1_Click(object sender, EventArgs e)
        {
            double x = 0;
            double y = 0;
            chart2.Series[0].Points.Clear();
            chart2.Series[0].LegendText = "Функция 1";
            chart2.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
            for (int i = 0; i < 1000; i++)
            {
                y = ((Math.Pow(x, 2) - 1) * (Math.Pow(x, 2) - 4) * (Math.Pow(x, 2) + 9));
                chart2.Series[0].Points.AddXY(x, y);
                x = x + 0.001;
            }
        }//функция 1
 
        private void button2_Click(object sender, EventArgs e)
        {
            double x = 0;
            double y = 0;
            chart2.Series[0].Points.Clear();
            chart2.Series[0].LegendText = "Функция 2";
            chart2.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
            for (int i = 0; i < 1000; i++)
            {
                y = ((3 - 2 * (1 / Math.Tan(x))) / (Math.Cos(x) * Math.Cos(x)));
                chart2.Series[0].Points.AddXY(x, y);
                x = x + 0.001;
            }
        }//функция 2
 
        private void button3_Click(object sender, EventArgs e)
        {
            double x = 0;
            double y = 0;
            chart2.Series[0].Points.Clear();
            chart2.Series[0].LegendText = "Функция 3";
            chart2.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Spline;
            for (int i = 0; i < 1000; i++)
            {
                y = ((Math.Pow(x, 2)) / ((Math.Pow((x * Math.Sin(x) + Math.Cos(x)), 2))));
                chart2.Series[0].Points.AddXY(x, y);
                x = x + 0.001;
            }
        }//функция 3
 
        private void chart2_Click(object sender, EventArgs e)
        {
 
        }
    }
}



0



8927 / 4839 / 1885

Регистрация: 11.02.2013

Сообщений: 10,246

20.02.2017, 07:49

5

Нужно смотреть область определения функции, чтобы при вычислениях там не получалось double.NaN



1



0 / 0 / 0

Регистрация: 12.04.2015

Сообщений: 4

21.02.2017, 04:27

 [ТС]

6

Внизу стоит косинус, так что при значениях 90 и 270 градусов в знаменателе будет 0. Но как можно построить график так, чтобы эти значения исключались? Сравнивать с double.NaN? Типа если y = NaN ничего не считать и сразу x = x+0.001, а если не равен, то все своим чередом? Или есть какой-то более простой способ исключить два конкретных значения x?



0



8927 / 4839 / 1885

Регистрация: 11.02.2013

Сообщений: 10,246

21.02.2017, 09:55

7

Аргументы в тригонометрические функции передаются в радианах. X у тебя меняется от 0 до 1, т.е. знаменатель в ноль не должен обращаться. Выведи значения аргумента и функций, чтобы увидеть, при каком значении аргумента функция становится double.NaN



1



0 / 0 / 0

Регистрация: 12.04.2015

Сообщений: 4

22.02.2017, 08:23

 [ТС]

8

Все, разобрался. Проблема была в котангенс, тангенс 0 равен 0, когда первое значение x поставил не 0, а 0,001 все заработало. Спасибо большое за вашу помощь!



0



Поиск в Интернете показал мне, что у меня и многих других была такая же проблема!

Для меня, когда одно из значений оси X было равно нулю, оно вернуло упомянутую вами ошибку.

Мне интересно, будет ли это всеобъемлющее решение, но у меня это сработало.

Сразу после того, как я добавил ChartAreasЯ установил miniumum Значения следующим образом.

    chart.ChartAreas.Add(chartArea);
    chart.ChartAreas[0].AxisX.Minimum = 0;
    chart.ChartAreas[0].AxisX2.Minimum = 0;
    chart.ChartAreas[0].AxisY.Minimum = 0;
    chart.ChartAreas[0].AxisY2.Minimum = 0;

Вы можете сделать это для Maximum ценности тоже.

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    Горизонтальная линия в chart

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    12.03.15, 11:28

      Senior Member

      ****

      Рейтинг (т): 10

      Добавляю точки, все нормально, нужно прочертить линию уровня

      ExpandedWrap disabled

        Graphics g = chart.CreateGraphics();

        g.DrawLine(…

      Она моргает, как сделать чтоб на фоне постоянно была?


      ter_nk_



      Сообщ.
      #2

      ,
      13.03.15, 11:06

        Senior Member

        ****

        Рейтинг (т): 10

        С этим все ясно, вот еще вопрос. Машстабирование поначалу происходит, когда получаешь значение большее шкала по значениям увеличивается, но когда значений больше какого-то уровня удаляю первый элемент, вот значения добавляются, но если поступает большое значение, которого не было увеличения шкалы не происходит AlimentOrientation AlignmentStyle поставлены в all.


        DIS



        Сообщ.
        #3

        ,
        14.03.15, 22:22

          Senior Member

          ****

          Рейтинг (т): 28

          Абракадабра какая-то. Если хотите чтоб помогли решить проблему, опишите подробнее, и с примером кода.


          ter_nk_



          Сообщ.
          #4

          ,
          24.03.15, 07:45

            Senior Member

            ****

            Рейтинг (т): 10

            Стоит автоматическая настройка и при изменении по вертикали значений

            Необработанное исключение типа «System.InvalidOperationException» в System.Windows.Forms.DataVisualization.dll

            Дополнительные сведения: Объект Axis — ошибка автоматической настройки интервалов из-за недопустимого значения в точке либо минимального или максимального значения оси.


            ter_nk_



            Сообщ.
            #5

            ,
            24.03.15, 09:17

              Senior Member

              ****

              Рейтинг (т): 10

              Неужели никто не сталкивался?


              DIS



              Сообщ.
              #6

              ,
              24.03.15, 15:25

                Senior Member

                ****

                Рейтинг (т): 28

                у меня вот тоже проект есть, и в нем постоянно выбрасывает NullPointer Exception. Кто нибудь сталкивался? :sarcasm:


                ter_nk_



                Сообщ.
                #7

                ,
                25.03.15, 05:23

                  Senior Member

                  ****

                  Рейтинг (т): 10

                  Неужели никто не сталкивался. Брать picturebox и все вручную рисовать.


                  foreach



                  Сообщ.
                  #8

                  ,
                  11.04.15, 14:28

                    Junior

                    *

                    Цитата ter_nk_ @ 12.03.15, 11:28

                    Она моргает, как сделать чтоб на фоне постоянно была?

                    Моргает в смысле не успевает отрисовываться?
                    У формы установить DoubleBuffered = true. Подробнее тут: https://msdn.microsoft.com/ru-ru/library/3t…(v=vs.110).aspx
                    По какому событию отрисовывается?


                    ter_nk_



                    Сообщ.
                    #9

                    ,
                    12.04.15, 03:58

                      Senior Member

                      ****

                      Рейтинг (т): 10

                      С чартом был странный глюк, как-то случайно я его удалил, поставил заново, поставил настройки в которых уже копался перекопался и заработало.


                      foreach



                      Сообщ.
                      #10

                      ,
                      12.04.15, 04:14

                        Junior

                        *

                        Т.е. сейчас типа все работает?

                        Добавлено 12.04.15, 04:15
                        В том числе и линия?


                        ter_nk_



                        Сообщ.
                        #11

                        ,
                        13.04.15, 02:46

                          Senior Member

                          ****

                          Рейтинг (т): 10

                          Да вроде все. Будем делать тесты посмотрим. Я на всякий случай и так отрисовал, на PictureBox.

                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                          0 пользователей:

                          • Предыдущая тема
                          • .NET: Общие вопросы
                          • Следующая тема

                          Рейтинг@Mail.ru

                          [ Script execution time: 0,0460 ]   [ 16 queries used ]   [ Generated: 13.06.23, 06:55 GMT ]  

                          <!— /* Font Definitions */ @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-520092929 1073786111 9 0 415 0;} /* Style Definitions */ p.MsoNormal,
                          li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:»»; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:»Calibri»,»sans-serif»; mso-fareast-font-family:Calibri;
                          mso-fareast-theme-font:minor-latin;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt;} @page WordSection1 {size:612.0pt 792.0pt; margin:72.0pt 72.0pt 72.0pt 72.0pt; mso-header-margin:36.0pt;
                          mso-footer-margin:36.0pt; mso-paper-source:0;} div.WordSection1 {page:WordSection1;} —>

                          Hi,

                          I regulary encounter the exception below. Often in the designer, or intermittantly at runtime on form load or when reseting a chart (i.e. clearing all the series of points).  It appears to be related to Axis Scale Breaks and seems to be a race condition
                          since it comes and goes with minor often unrelated changes (ie. recompiling in Debug rather than Release builds). What I’ve observed is it’s usually caused when series are added to a chart and the Axis scale break is enabled in the form constructor (i.e adding
                          series and setting scale break on in Form_OnLoad() seems to «fix» the exception). Sometimes it’s also thrown after I call Clear on all series, hence my suspicion that there’s an unhandled edge case when scale break is on and the chart is empty.

                          Any suggestions on how to avoid as this totally kills my app.

                          Dave

                          System.InvalidOperationException: Axis object – Auto interval error due to invalid point values or axis minimum/maximum.

                             at System.Windows.Forms.DataVisualization.Charting.Axis.CalcInterval(Double diff)

                             at System.Windows.Forms.DataVisualization.Charting.Axis.EstimateNumberAxis(Double& minimumValue, Double& maximumValue, Boolean shouldStartFromZero, Int32 preferredNumberOfIntervals, Boolean autoMaximum, Boolean autoMinimum)

                             at System.Windows.Forms.DataVisualization.Charting.AxisScaleBreakStyle.FillAxisSegmentCollection(AxisScaleSegmentCollection axisSegments)

                             at System.Windows.Forms.DataVisualization.Charting.AxisScaleBreakStyle.GetAxisSegmentForScaleBreaks(AxisScaleSegmentCollection axisSegments)

                             at System.Windows.Forms.DataVisualization.Charting.ChartArea.SetDefaultAxesValues()

                             at System.Windows.Forms.DataVisualization.Charting.ChartArea.SetData(Boolean initializeAxes, Boolean checkIndexedAligned)

                             at System.Windows.Forms.DataVisualization.Charting.ChartArea.SetData()

                             at System.Windows.Forms.DataVisualization.Charting.ChartArea.ReCalcInternal()

                             at System.Windows.Forms.DataVisualization.Charting.ChartPicture.Paint(Graphics graph, Boolean paintTopLevelElementOnly)

                             at System.Windows.Forms.DataVisualization.Charting.ChartPicture.PaintOffScreen()

                             at System.Windows.Forms.DataVisualization.Charting.Selection.HitTest(Int32 x, Int32 y, Boolean ignoreTransparent, ChartElementType[] requestedElementTypes)

                             at System.Windows.Forms.DataVisualization.Charting.Selection.HitTest(Int32 x, Int32 y, Boolean ignoreTransparent)

                             at System.Windows.Forms.DataVisualization.Charting.Selection.EvaluateToolTip(MouseEventArgs e)

                             at System.Windows.Forms.DataVisualization.Charting.Selection.Selection_MouseMove(Object sender, MouseEventArgs e)

                             at System.Windows.Forms.DataVisualization.Charting.Chart.OnChartMouseMove(MouseEventArgs e)

                             at System.Windows.Forms.DataVisualization.Charting.Chart.OnMouseMove(MouseEventArgs e)

                             at System.Windows.Forms.Control.WmMouseMove(Message& m)

                             at System.Windows.Forms.Control.WndProc(Message& m)

                             at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)

                             at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

                             at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

                             at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)

                             at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)

                             at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)

                             at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)

                             at System.Windows.Forms.Application.Run(Form mainForm)

                             at Program.Main() in Program.cs:line 23

                          Понравилась статья? Поделить с друзьями:
                        • Объединить ячейки в excel ошибка
                        • Объединенный союз лексическая ошибка или нет
                        • Объединенный союз допущена лексическая ошибка все правильно
                        • Общиймодуль слкменеджерзащиты модуль 578 ошибка лицензирования 52ba
                        • Общиймодуль апметодыработыскартографией модуль 70 ошибка при вызове конструктора чтениетекста