Начну, пожалуй, с того, что компонент Chart
используется для построения разного рода графиков и диаграмм.
У компонента имеется целая куча настроек, которые, в большинстве своем, отвечают за его внешний вид, а не функционал.
Для того чтоб построить график, необходимо его добавить (на вкладке Series).
Тут, как вы уже, вероятно догадались, необходимо выбрать вид графика.
В дальнейшем, обращаться к созданному ряду (Series или серии) можно так:
Series1->AddXY(znach_x,znach_y,"Название ряда",clRed);
Здесь Series1
– название серии, а znach_x
и znach_y
представляют собой значения по X и Y, соответственно. Последним задается цвет линии (в примере, clRed
).
Сокращенный вариант выглядит так:
Series1->AddXY(znach_x,znach_y);
Здесь добавляются лишь значения ряда. А его цвет и название настраиваются вручную.
В случае, если вам необходимо построить гистограмму или круговую диаграмму, задается лишь одно значение. Например, так:
Series1->Add(znach_x,"Название ряда",clYellow);
Из любопытного: включать и выключать режим 3D можно посредством установки чекбокса (компонент CheckBox). Обработчик события клика по нему (OnClick
) может быть таковым:
Chart1->View3D =! Chart1->View3D;
Здесь Chart1
– название компонента.
Пара скринов работы компонента Chart приведена ниже.
Круговая диаграмма (режим 3D).
Гистограмма (режим 2D).
Интересный у вас блог, желаю вам дальнейшего развития. И главное не останавливайтесь перед трудностями
Спасибо.
У вас тоже интересный =)
Правда, смущает отсутствие подписки на комментарии (и просто подписки). А так все замечательно )))
К сожалению, главная ставка при создании Chart делалась не на её функциональность, а на внешний вид. Ведь дополнительные ненужные настройки только мешают при работе, а программа должна быть удобной и практичной. Спасибо за статью, желаю Вам удачи.
В этом вы, бесспорно правы. Хотя, внешний вид, вкупе с простотой настройки делают компонент довольно популярным среди начинающих программистов.
Hello! Just want to say thank you for this interesting article! =) Peace, Joy.
This actually answered my problem, thanks!
Check out the free offer for luxury watches.
Я пользовалась какое то время этой программой, но сейчас отказалась. Нашла по лучше программку. А в этой программе, как правильно сказал Lan, мало функциональности.
А где и что нашли?
Не смог разобраться в настройках компонента Chart!очень всё запутанно!Пожалуйста помогите разобраться!
Вы бы описали задачу – я бы помогла. А вслепую… ну… проблемно помочь-то 🙂
Полезно, спасибо!
А может ли этот компонент динамически в цикле ставить по оси Х значения из двухмерного массива для соответствующих значений Y? Спасибо.
Да, конечно можно. Например так:
Построение графика y=5x+2. Код:
При этом Series1 можно задать Lines (посмотрите в граф. виде – там все нарисовано))))
Если не получится – напишите.
Да, все работает, и с StringGrid’ом тоже. Спасибо!
Всегда пожалуйста =)
Не знаю, в какой теме лучше спросить. Данные для чарта должны считываться из файла. Задаю
ifstream infile;
infile.open(“name”);
В таком виде все в порядке. Но мне надо, чтобы пользователь мог сам ввести имя файла, например, через Edit.
Делаю так
AnsiString str;
str = Edit1->Text;
infile.open(str);
Не может открыть файл. Не подскажете, как быть?
Можно, конечно, попробовать кавычки поставить (в пхп бы сработало):
а вот си, боюсь, не глотнет. Просто потому, что код генерируется не “по гарячему”, а компилятору возможные названия файлов не известны.
Посоветовала бы перебрать все названия файлов в сравнениях:
Спасибо.
Пожалуйста =)
Здравствуйте, у меня по горизонтальной оси значения идут не по возрастанию, вот код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float x;
float P0=1,n=1,V0=1,S=1,V1=1,e,L;
FILE *Z;
x=StrToFloat(Edit1->Text);
P0=1*pow(10,6);
n=1.3;
V0=1.171*pow(10,-3);
S=8.65*pow(10,-3);
V1=V0-S*x;
e=pow(V0/V1,n) ;
L=(P0*V0)/(n-1)*(pow(e,(n-1)/n)-1);
Edit2->Text=FloatToStr(L);
Z=fopen(“name”,”a”);
fprintf(Z,”%f %f”,x,L);
fclose(Z);
}
//—————————————————————————
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i;
float x1[20],L1[20];
FILE *Z;
Z=fopen(“name”,”r”);
for(i=0;iAdd(L1[i],x1[i],clRed);}
fclose(Z);
}
//—————————————————————————
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Close();
}
//—————————————————————————
А вы не могли бы код вставить используя теги “Код” (кнопка над формой комментирования)? Просто куска кода нет… И в силу этого не очень ясно где именно происходит прорисовка графика и простановка чисел на нем.
У вас на 3 картинке (гистограма) по оси х идет текст, как ето делаетса?
На вкладке Axes