Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Delphi: информация по TChart

Автор: Kaylang
Дата сообщения: 20.08.2003 13:48
В Хелпе ничего толкового о нем найти не смог...

Проблема в том, чтобы в нижней оси названия меток разместить в 2 ряда. Т.е. чтобы нечетные шли в верхнем ряду, а четные в нижнем. Необходимость возникла в связи с длинными названиями, а сократить их нельзя. В редактировании графика в части Chart на закладке Axes(естественно Bottom) -> Labels, ставлю флажок Multi-line, но после закрытия редактирования и повторного его открытия выясняется, что флажок пропадает. Может кто знает, как это побороть?
И еще есть проблема размещения Marks на графике типа Pie. Как сделать, чтобы они не перекрывали друг друга?

Заранее благодарен за советы и подсказки!
Автор: Kaylang
Дата сообщения: 21.08.2003 16:02
Что, никто не знает?

Может есть какие другие компоненты для работы с графиками?
Автор: Kaylang
Дата сообщения: 25.08.2003 13:19
На всякий случай ап...
Автор: sailor
Дата сообщения: 15.12.2003 22:09
Kaylang
К сожалению не знаю. Сам только что приступил к работе с Tchart'ом.

Цитата:
но после закрытия редактирования и повторного его открытия выясняется, что флажок пропадает.

Может быть в коде вручную присвоить свойство?

У меня другой вопрос. Как сделать разноцветный график? Т.е. чтобы часть кривой (допустим, слева) была красной, а часть (начиная с какой-то точки Х1) была синей?
Автор: hog
Дата сообщения: 16.12.2003 04:04
sailor

Цитата:
Как сделать разноцветный график

типа того:
Chart.Series[0].Clear;
for x := 0 to 100 do begin
if x < X1 then color := clRed
else color := clBlue;
Chart.Series[0].Add(calc_y(x), '', color);
end;
Автор: sailor
Дата сообщения: 17.12.2003 05:24
hog
А у тебя точно это работает?
Эх... если бы всё было так просто...
У самого Tchart (вернее у TchartSeries) есть свойство SeriesColor. Его ещё можно указать не в коде, а в панели инструментов (типа Border). Так вот этот цвет у меня все цвета и перекрывает! Т.е. на цвет color в Chart.Series[0].Add(calc_y(x), '', color); он внимания вообще не обращает!
Пробовал делать вот так:

Цитата:
For i:=1 to CK do
begin
val(a2[i],v2,ko);
if i<50 then
begin
Chart1.Series[0].SeriesColor:=clred;
color:=clred;
end;
if i>50 then
begin
Chart1.Series[0].SeriesColor:=clblue;
color:=clblue;
end;
Chart1.Series[0].AddXY(i+37950,v2,'',color);

но тогда весь график синий - Chart1.Series[0].SeriesColor перебивает все цвета.
Может у меня Tchart какой-то не такой? Почему он на color не реагирует?
Автор: hog
Дата сообщения: 17.12.2003 07:20
sailor

Цитата:
А у тебя точно это работает?

ага (ну не совсем это, но смысл один)

Цитата:
Chart1.Series[0].SeriesColor перебивает все цвета.

А если попробовать поиграться со свойством ColorEachPoint?

Цитата:
The TChartSeries ColorEachPoint property is a boolean property that controls which color will be drawn on the Series points. If False, all points will be drawn using the Series SeriesColor color property. If True, each Series point will be "colored" with its corresponding point color. The point colors are stored in the TChartSeries.ValueColor array property. If a point has a clTeeColor color value, then a palette color value will be used to draw it.

еще - какого типа у тебя Series[0]?

Добавлено
Видимо у тебя - TFastLineSeries, который ориентирован на быстроту.
Если его заменить на TLineSeries, то скорее всего все заработает.
Автор: sailor
Дата сообщения: 17.12.2003 19:41
hog

Цитата:
Видимо у тебя - TFastLineSeries, который ориентирован на быстроту.
Если его заменить на TLineSeries, то скорее всего все заработает.

Итак 500 точек быстро рисуются. У меня TLineSeries.

Цитата:
если попробовать поиграться со свойством ColorEachPoint?

Попробую, но по логике вещей должно работать и
"Chart.Series[0].Add(calc_y(x), '', color);" (для чего же тогда color?)
Автор: hog
Дата сообщения: 18.12.2003 22:54
sailor

Цитата:
Итак 500 точек быстро рисуются. У меня TLineSeries.

хмм. давай я тебе работающий пример скину на почту? =)
Автор: sailor
Дата сообщения: 03.01.2004 10:12
hog

Цитата:
мм. давай я тебе работающий пример скину на почту? =)

Спасибо, только сейчас смог всё это проверить. Интересно... Беру код из юнита, со своим TChart1 - не работает. Тогда взял ещё и твой TChart скопировал с твоей формы на свою и всё заработало! Видать, ты там ещё что-то в настройках менял.. Или я..

А теперь такой вопрос. Совсем непонятно мне как решить проблему
Есть у меня набор данных (хранится в многомерном массиве): номер элемента массива, дата, значение.
Примернотакого вида:

...
260 05/02/03 542
261 06/02/03 523
262 08/02/03 535
...

Т.е. дата нелинейно увеличивается. Строится график по индексам замечательно (индекс массива - это х, а значение - это y). Но тогда по оси х выкладываются никому непонятные циферки 260, 261, 262. Как бы мне вместо них даты поставить? Если бы даты шли подряд - никаких проблем, разобрался. А так - на равных расстояниях между точками по оси х могут стоять даты с различным "расстоянием" друг от друга. Например, 1,2,3 января, а потом сразу 7-е (на таком же расстоянии как между 1,2,3-м). Немного сумбурно получилось, конечно.. Но, по-моему, суть проблемы ясна.

Автор: hog
Дата сообщения: 04.01.2004 02:58
sailor

Цитата:
Как бы мне вместо них даты поставить?

А если так: в настройках "Series" на закладке "General" есть галки Datetime для горизонтальной и вертикальной осей, соответственно включаешь первую.
а дальше заполняешь в цикле:
Chart3.Series[0].AddXY(_дата_, _значение_);

если не понял - скинь мне на почту свой пример =)
Автор: X11
Дата сообщения: 26.08.2009 12:39
Извиняюсь за поднятие старой темы, но может кто подскажет, как сохранять/восстанавливать на стройки TeeChart?
Использую TeeChart 8 Pro

Страницы: 1

Предыдущая тема: Русские OpenSource-проекты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.