Шаг 230.
Microsoft Visual C++ 2010. Язык С/С++.
Компоненты Windows Forms. Компонент Chart (окончание)

    На этом шаге мы рассмотрим построение графиков, имеющих точки разрыва.

    На этом шаге мы приведем пример построения графика с разрывами.

    На форму проекта помещен компонент сhart1 со свойством Dock=Fill, построение происходит по загрузке формы.

    Текст обработчика:

private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
	 using namespace System::Collections::Generic;
	 using namespace System::Drawing::Drawing2D;
	 using namespace System::Windows::Forms::DataVisualization::Charting;

	 Dictionary <double, double> ^f1 = gcnew Dictionary<double, double>();
	 chart1->Series[0]->ChartType = SeriesChartType::Line;
	 chart1->Series[0]->MarkerStyle = MarkerStyle::Circle;

	 chart1->ChartAreas[0]->AxisY->ScaleBreakStyle->Enabled = true;
	 chart1->ChartAreas[0]->AxisY->ScaleBreakStyle->CollapsibleSpaceThreshold = 
                                                          25;
	 chart1->ChartAreas[0]->AxisY->ScaleBreakStyle->LineWidth = 2;
	 chart1->ChartAreas[0]->AxisY->ScaleBreakStyle->LineColor = Color::Red;
	 chart1->ChartAreas[0]->AxisY->ScaleBreakStyle->StartFromZero = 
                                                          StartFromZero::Auto;
	 chart1->ChartAreas[0]->AxisY->ScaleBreakStyle->Spacing = 2;

	 for (double x = 0; x < 3.14; x += 0.1) {
		 double f = tan(x); //#include <cmath>
		 f1->Add(x, f);
	 }

	 chart1->Series[0]->Points->DataBindXY(f1->Keys, f1->Values);
	 chart1->Series[0]->LegendText = L"tan(x)";
	 chart1->Series[0]->Color = System::Drawing::Color::Green;
	 chart1->Series[0]->BorderWidth = 2;
 }
Архив проекта можно взять здесь.

    Результат работы приложения приведен на рисунке 1.


Рис.1. Результат работы приложения

    Все приведенные в этом обработчике конструкции мы рассмотрели на предыдущих шагах. Мы же остановимся на свойстве ScaleBreakStyle.

    Данное свойство задает стиль разрыва оси диаграммы. Для графика функции y=tg(x) это актуально, так как при значении x=π/2 значение тангенса стремится к бесконечности.

    Вот конструкции, которые задают параметры разрыва шкалы. Перечислим назначение свойств, приведенных в этом примере.

    По умолчанию разрывы шкалы отключены. Можно включить разрывы шкалы на оси Y, задав Enabled свойству значение true. Чтобы изменить объем вертикального пространства разрыва шкалы, можно указать значение для параметра Spacing, которое вычисляется в процентах от шкалы по оси Y.

    Для рисования разрыва шкалы необходимо иметь достаточное разделение между диапазонами точек данных в одном ряду. По умолчанию, разрыв шкалы можно добавить только в случае, когда зазор между диапазонами составляет не менее 25% диаграммы. Если включить разрыв шкалы, но он не отображается, даже если между диапазонами данных имеется достаточное расстояние, то нужно задать CollapsibleSpaceThreshold для свойства значение меньше 25.

    Данное свойство получает или задает порог пространства диаграммы, при котором начинается рисование разрывов шкалы (значение целого типа). Это свойство измеряется в процентах от шкалы по оси Y. Значение по умолчанию равно 25. Это означает, что точки данных в ряде, которые имеют разность по крайней мере 25% шкалы, будут свернуты с разрывом шкалы.

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

    При использовании разрыва шкалы метки оси Y могут быть смещены. Чтобы отключить смещение метки, присвойте свойству IsStaggered значение false.

    В заключение укажем, когда не поддерживаются разрывы шкалы:




Предыдущий шаг Содержание