@Molodoy42

Chart. Ось Ox съезжает. Почему?

6619595c57316905323316.png
Всем привет. Почему то, когда пытаюсь вставить самый верхний синий график (f(x) = x^5+(x+10)^1/3) ось Ox съезжает вправо. Из чего это происходит?
66195a1891bb7192378646.png
Обработчик событий:
double Xmin, Xmax, Ymin, Ymax, Hx, Hy, h;
		bool check = false;


	private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {
		Xmin = -9.1; Xmax = 5.8; Ymin = -3; Ymax = 5;
		Hx = 1; Hy = 0.5; //or Math::PI
		h = 0.14; // Установка шага расчета таблицы
		// Вывод данных в окна однострочных редакторов
		textBox1->Text = Convert::ToString(Xmin);
		textBox2->Text = Convert::ToString(Xmax);
		textBox3->Text = Convert::ToString(Ymin);
		textBox4->Text = Convert::ToString(Ymax);
		textBox5->Text = Convert::ToString(Hx);
		textBox6->Text = Convert::ToString(Hy);
		textBox7->Text = Convert::ToString(h);

		this->chart1->ChartAreas[0]->AxisX->IsLabelAutoFit = false;
		// Установка левой границы нижней оси
		this->chart1->ChartAreas[0]->AxisX->Minimum = Xmin;
		//Установка правой границы нижней оси
		this->chart1->ChartAreas[0]->AxisX->Maximum = Xmax;

		this->chart1->ChartAreas[0]->AxisY->IsLabelAutoFit = false;
		// Установка нижней границы левой оси
		this->chart1->ChartAreas[0]->AxisY->Minimum = Ymin;
		// Установка верхней границы левой оси
		this->chart1->ChartAreas[0]->AxisY->Maximum = Ymax;
		// Установка шага разметки по нижней оси
		this->chart1->ChartAreas[0]->AxisX->Interval = Hx;
		// Установка шага разметки по левой оси
		this->chart1->ChartAreas[0]->AxisY->Interval = Hy;

	}


	private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

		bool flag = true;
		try {
			Xmin = Convert::ToDouble(textBox1->Text);
			Xmax = Convert::ToDouble(textBox2->Text);
			Ymin = Convert::ToDouble(textBox3->Text);
			Ymax = Convert::ToDouble(textBox4->Text);
			Hx = Convert::ToDouble(textBox5->Text);
			Hy = Convert::ToDouble(textBox6->Text);
			h = Convert::ToDouble(textBox7->Text);
		}
		catch(Exception^ ex){
			flag = false;
			MessageBox::Show("Данные не являются числами!", "Ошибка", MessageBoxButtons::OK, MessageBoxIcon::Warning);
		}
		if (flag) {
			this->chart1->ChartAreas[0]->AxisX->IsLabelAutoFit = false;
			// Установка левой границы нижней оси
			this->chart1->ChartAreas[0]->AxisX->Minimum = Xmin;
			//Установка правой границы нижней оси
			this->chart1->ChartAreas[0]->AxisX->Maximum = Xmax;

			this->chart1->ChartAreas[0]->AxisY->IsLabelAutoFit = false;
			// Установка нижней границы левой оси
			this->chart1->ChartAreas[0]->AxisY->Minimum = Ymin;
			// Установка верхней границы левой оси
			this->chart1->ChartAreas[0]->AxisY->Maximum = Ymax;
			// Установка шага разметки по нижней оси

			this->chart1->ChartAreas[0]->AxisX->Interval = Hx;
			// Установка шага разметки по левой оси
			this->chart1->ChartAreas[0]->AxisY->Interval = Hy;
		}
	}


	private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
		this->chart1->Series[0]->Points->Clear();//очистка графиков
		this->chart1->Series[1]->Points->Clear();//очистка графиков
		this->chart1->Series[2]->Points->Clear();//очистка графиков
		double x, y1, y2, y3;
		check = true;
		x = Xmin; //начальное значение по Х
		while (x <= Xmax)
		{
			if (checkBox1->Checked == true) {
				y1 = pow(x, 5) + pow(x + 10, 1.0 / 3.0);//расчет функции
				this->chart1->Series[0]->Points->AddXY(x, y1);//вывод точки на график
			}

			if (checkBox2->Checked == true) {
				y2 = 1.3 * pow(4 + x * x, 1.0 / 2.0);//расчет функции
				this->chart1->Series[1]->Points->AddXY(x, y2);//вывод точки на график
			}

			if (checkBox3->Checked == true) {
				y3 = pow(fabs(x + 1), x);//расчет функции
				this->chart1->Series[2]->Points->AddXY(x, y3);//вывод точки на график
			}

			x += h;//увеличение значения Х на величину шага
		}
	}
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы