Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > .NET: Общие вопросы > Несколько вопрос про ЭУ Chart


Автор: FasterHarder 14.04.19, 09:18
Всем хай! Сходу к делу!
Разбираюсь поглубже с элементом отображения диаграмм Chart.
Прикладываю картинку, на которой показаны некоторые настройки диаграммы. Все настройки прописаны кодом. В конструкторе ничего не настраиваю. Мне нужно ТОЛЬКО кодом.

chart_x_2.png (, : 398)

ВОПРОС №1: есть ли возможность вывести на область диаграммы ТАБЛИЦУ ДАННЫХ? Такая таблица автоматически строится в Excel. Должна же быть какая-то опция где-то. Не могу найти.
ВОПРОС №2: не вижу опций, где можно задать размер, настройки шрифта, местоположение ЛЕГЕНДЫ. В подсказке есть "LegendText", "IsVisibleLegend", "LegendToolTip". Все! Первые две использую. Но где LegendFont и пр.?
ВОПРОС №3:
используя код:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    this.chr.Series[0].Label = "Т";

можно вывести подписи данных на графике (рядом с круглишком). Но, как видно, для всех точек графика (правда я их вывожу через 1, поэтому есть пропуски, опция "MarkerStep = 2") печатается ТУПО одно и то же, а именно буква 'T'. А хотелось бы, чтобы выводились координаты точек. В принципе, я вроде понимаю, как это можно закодить, но неужели нет опции, которая автоматом их подставляет. Вроде была. Не могу найти...
ВОПРОС №4: не могу понять, как изменить ЦВЕТ самой линии графика (тип у меня СПЛАЙН). Да, есть выбора ПАЛИТРЫ (пастель, брайт, берри и пр.), но не вижу, как задать это программно.

Спс. за любые наводки!

Автор: Pit-Bul 22.04.19, 05:37
Цитата
ВОПРОС №1: есть ли возможность вывести на область диаграммы ТАБЛИЦУ ДАННЫХ? Такая таблица автоматически строится в Excel. Должна же быть какая-то опция где-то. Не могу найти.


нет, реализуй отдельным DataGrid или ListVewie

Цитата
ВОПРОС №2: не вижу опций, где можно задать размер, настройки шрифта, местоположение ЛЕГЕНДЫ. В подсказке есть "LegendText", "IsVisibleLegend", "LegendToolTip". Все! Первые две использую. Но где LegendFont и пр.?


ЛЕГЕНДА это отдельный объект и у него есть свои атрибуты, которые можно редактировать из кода

Цитата
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    this.chr.Series[0].Label = "Т";

можно вывести подписи данных на графике (рядом с круглишком). Но, как видно, для всех точек графика (правда я их вывожу через 1, поэтому есть пропуски, опция "MarkerStep = 2") печатается ТУПО одно и то же, а именно буква 'T'. А хотелось бы, чтобы выводились координаты точек. В принципе, я вроде понимаю, как это можно закодить, но неужели нет опции, которая автоматом их подставляет. Вроде была. Не могу найти...


тут не понятно что вам надо, поясните другими словами

Цитата
ВОПРОС №4: не могу понять, как изменить ЦВЕТ самой линии графика (тип у меня СПЛАЙН). Да, есть выбора ПАЛИТРЫ (пастель, брайт, берри и пр.), но не вижу, как задать это программно.


цвет графика задается при создании объекта Series
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    series.Color = Color.Red;


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

Автор: FasterHarder 22.04.19, 07:31
Цитата Pit-Bul @
нет, реализуй отдельным DataGrid или ListVewie

ясно. жаль! очень странно, что не встроили эту возможность по дефалту...

Цитата Pit-Bul @

ЛЕГЕНДА это отдельный объект и у него есть свои атрибуты, которые можно редактировать из кода

с этим уже сам разобрался еще на той неделе

Цитата Pit-Bul @
тут не понятно что вам надо, поясните другими словами

с этим уже сам ЧАСТИЧНО разобрался еще на той неделе

Цитата Pit-Bul @
цвет графика задается при создании объекта Series

а вот с этим вроде ДО СИХ пор не разобрался. Не подскажешь конкретно свойство? вроде все там перепробовал, а цвет не менялся...

Цитата Pit-Bul @
и еще в догонку, в студии есть оочень полезный инструмент, под названием ObjectBrowser. Он поможет вам разобраться с возможностями классов и элементов управления.

ага

думал, что раздел ИЗДОХ окончательно!
но все-таки еще тлеет еле-еле-еле-еле...
Pit-Bul, спс и на этом)

Автор: Pit-Bul 26.04.19, 12:30
Цитата FasterHarder @
Цитата Pit-Bul @ 22 апреля, 08:37
цвет графика задается при создании объекта Series

а вот с этим вроде ДО СИХ пор не разобрался. Не подскажешь конкретно свойство? вроде все там перепробовал, а цвет не менялся...



я же показал в первом посте

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    series.Color = Color.Red;

Автор: FasterHarder 26.04.19, 17:31
Цитата Pit-Bul @
я же показал в первом посте

ага, понял, правда чуток не так нужно, а с указанием индекса серии данных, типа:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    this.Chart1.Series[0].Color = ...

ну я понял, что ты упростил код, чтоб долгА не писать ;)

кстати, еще такой прикол с этим цветом, что IntelleSence не встает на него)) приходится вручную пробивать слово "Color".

Слушай, у меня еще вопросы появились, подсоби, если хочешь/можешь:
1. не могу вывести подписи к сетке вторичной (MinorGrid). Не вижу в подсказке там ничего про Label

вот нету ничего:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
                // настройка вспомогательных линий сетки для оси Oy
                this.chart1.ChartAreas[0].AxisY.MinorGrid.Enabled = true;
                this.chart1.ChartAreas[0].AxisY.MinorGrid.Interval = 1;
                this.chart1.ChartAreas[0].AxisY.MinorGrid.LineWidth = 1;
                this.chart1.ChartAreas[0].AxisY.MinorGrid.LineDashStyle = System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.Dot;
                this.chart1.ChartAreas[0].AxisY.MinorGrid.LineColor = Color.Gray;
                // подпись фамилий под каждым столбиком можно наклонить на любой заданный угол
                // this.chart1.ChartAreas[0].AxisX.LabelStyle.Angle = 90;


т е к примеру строю график ф-ции f(x) = x^2 и основная сетка имеет шаг 10, а малая сетка шаг = 2. Выводятся лишь метки 0, 10, 20, а малых меток нет.

2. я чегот не пойму, ведь можно выбрать разный тип диаграммы: столбиковая, японские свечи, лепестковая, пузырьковая и пр. пр. Свойства динамически меняются в подсказке? или общие на все случаи диаграмм? На некоторых типах диаграмм опции, которые влияли на др.тип не оказывают никакого влияния.

Автор: Pit-Bul 29.04.19, 03:47
Цитата FasterHarder @
ну я понял, что ты упростил код, чтоб долгА не писать

нет не понял :P

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    var series = new Series();
    series.Color = Color.Red;
    //тут все остальное настраиваешь
    this.Chart1.Series.Add(series);


вот почему коротко написано :)

Добавлено
Цитата FasterHarder @
1. не могу вывести подписи к сетке вторичной (MinorGrid). Не вижу в подсказке там ничего про Label


Тут поковыряй

Цитата FasterHarder @
2. я чегот не пойму, ведь можно выбрать разный тип диаграммы: столбиковая, японские свечи, лепестковая, пузырьковая и пр. пр. Свойства динамически меняются в подсказке? или общие на все случаи диаграмм? На некоторых типах диаграмм опции, которые влияли на др.тип не оказывают никакого влияния.

а что мешает тебе задавать свойства при смене диаграммы ?

Цитата FasterHarder @
На некоторых типах диаграмм опции, которые влияли на др.тип не оказывают никакого влияния.

тут пример бы не помешал.

Автор: FasterHarder 30.04.19, 21:50
Перевожу код настройки диаграммы с C# на С++.НЕТ и все идет хорошо, кроме этого Font:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    this.chart1.Titles[0].Font = new Font("Verdana", 18, FontStyle.Bold | FontStyle.Italic);


заменяю на:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    this->chart1->Titles[0]->Font = new Font("Verdana", 18, FontStyle::Bold | FontStyle::Italic);


и получаю сообщение:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    syntax error : identifier 'Font'


ничего не понимаю :huh: , куда фонт подевался. И в интелисенс нет такой подсказки.

В чем проблема может быть? (кроме того, что я слабак в С++ и C#, разумеется)

Добавлено
т е вот это прекрасно преобразовалось все на С++.НЕТ:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
                this->chart1->Titles->Clear();
                this->chart1->Titles->Add("Текст какой-то");
                // this->chart1->Titles[0]->Font = new Font("Verdana", 18, FontStyle::Bold | FontStyle::Italic); // <<<--- not compile...
                // настраиваем цвет шрифта заголовка
                this->chart1->Titles[0]->ForeColor = Color::Blue;
                // настраиваем цвет фона шрифта заголовка
                this->chart1->Titles[0]->BackColor = Color::Beige;

Автор: FasterHarder 01.05.19, 23:03
Цитата Pit-Bul @
вот почему коротко написано

ну я понял уже, что обычно так и поступают, создают item, настраивают, а затем добавляют в коллекцию. ну в общем, да, наверное, так проще, меньше писать, хотя с такими подсказками как у С# прогать одно удовольствие))

Цитата Pit-Bul @
Тут поковыряй

покурил я тот пример, почти до бычка
вот, что там строят:
______________.png (, : 358)

но там нет того, что мне было очень нужно.
из этого примера можно посмотреть как настраивают праймеры и секондари оси, но про подписи миноров там нету) + bindXY прикольно привязывается (обычно по точкам добавлял)

кстати, подкинь еще что-нибудь покурить по ЧАРТАМ. Пример нашел хороший в принципе, много чего строится (правда все почти знакомо было). Нужны еще БОЛЬШЕ примеры, где 300-400 свойств затрагивается) было бы харашо...

в сети, лазаю, нахожу какие-то статьи про чарт, так там 5-6 свойств показывают и ВСЕ)) причем свойства типа Title, Name.

Я вот хочу разобраться с аннотациями и коллокейшенами, т к воотбще не понимаю, что они делают. Хорошо понимаешь их?

Автор: webcoder88 19.05.19, 22:40
FasterHarder
Есть пример с исходным кодом от Microsoft, демонстрирующий почти все возможности chart. Собирается без проблем (в vs2012 и выше).
Произвольные подписи пользователя к осям, подписи со значениями к каждой точке серии, установка шрифтов, цветов, скрытие меток, осей, заголовки чата, легенда, подписи к основным и дополнительным осям, аннотации и тд.

Samples Environments for Microsoft Chart Controls.zip

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)