| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > TChart. Значения по оси Y выходят за пределы |
| Автор: sm1 8.4.2013, 03:33 |
| TChart. Значения по оси Y выходят за пределы графика. Если минимальное и максимальное значение по оси Y у графика целые, а промежуточные значения дробные, то промежуточные значения выходят за пределы экрана (Происходит это из-за того, что TChart считает длину первой и последней метки, а промежуточные, видимо, не учитывает). Как этого избежать? Добавлялось так: Chart1->Series[0]->Add(0.0,"",clRed); Chart1->Series[0]->Add(0.1,"",clRed); Chart1->Series[0]->Add(0.2,"",clRed); Chart1->Series[0]->Add(0.2323,"",clRed); Chart1->Series[0]->Add(0.234566,"",clRed); Chart1->Series[0]->Add(0.543234,"",clRed); Chart1->Series[0]->Add(0.676756,"",clRed); Chart1->Series[0]->Add(0.76756,"",clRed); Chart1->Series[0]->Add(0.88856,"",clRed); Chart1->Series[0]->Add(0.8996756,"",clRed); Chart1->Series[0]->Add(0.96656,"",clRed); Chart1->Series[0]->Add(1.0,"",clRed); Chart1->LeftAxis->Increment=0.1888; |
| Автор: Poseidon 8.4.2013, 09:17 |
| А вообще что-то сам наделал. Только что попробовал. Ничего в настройках не менял, кроме добавления Series. http://s2.ipicture.ru/Gallery/Viewfull/23731910.html |
| Автор: sm1 8.4.2013, 09:20 | ||
| Смысл вопроса это не меняет. На дельфи это: Chart1.Series[0].Add(0.0,'',clRed); Chart1.Series[0].Add(0.1,'',clRed); Chart1.Series[0].Add(0.2,'',clRed); Chart1.Series[0].Add(0.2323,'',clRed); Chart1.Series[0].Add(0.234566,'',clRed); Chart1.Series[0].Add(0.543234,'',clRed); Chart1.Series[0].Add(0.676756,'',clRed); Chart1.Series[0].Add(0.76756,'',clRed); Chart1.Series[0].Add(0.88856,'',clRed); Chart1.Series[0].Add(0.8996756,'',clRed); Chart1.Series[0].Add(0.96656,'',clRed); Chart1.Series[0].Add(1.0,'',clRed); Chart1.LeftAxis.Increment:=0.1888; Смысл-то не в кода. Он понятен. Добавляются точки и меняется значение инкермент у оси, чтобы промежуточные значения оси были дробными. Остальное на скриншоте. Добавлено @ 09:24
Спасибо за ответ. У меня следующие параметры графика: object Chart1: TChart Left = 32 Top = 48 Width = 400 Height = 250 BackWall.Brush.Color = clWhite BackWall.Brush.Style = bsClear Title.Text.Strings = ( 'TChart') LeftAxis.LabelStyle = talValue LeftAxis.MinorTickCount = 6 LeftAxis.MinorTickLength = 3 LeftAxis.RoundFirstLabel = False View3D = False TabOrder = 0 object Series1: TLineSeries Marks.ArrowLength = 8 Marks.Visible = False SeriesColor = clRed Pointer.InflateMargins = True Pointer.Style = psRectangle Pointer.Visible = False XValues.DateTime = False XValues.Name = 'X' XValues.Multiplier = 1 XValues.Order = loAscending YValues.DateTime = False YValues.Name = 'Y' YValues.Multiplier = 1 YValues.Order = loNone end end То есть если и вверху и внизу значения, длина которых меньше остальных, происходит неприятность. У Вас значение верхнее по длине такое же, как и в середине, поэтому не происходит такого эффекта. |
| Автор: Poseidon 8.4.2013, 09:34 | ||
http://s2.ipicture.ru/Gallery/Viewfull/23732791.html |
| Автор: sm1 8.4.2013, 09:39 |
| Да, попробовал тот же самый код из дельфи7 в ХЕ3 перенести и получилось то же, что и у Вас. Но при этом либо минимум, либо максимум не видны на графике. Так изящно в последующих версиях вышли из ситуации на первом скриншоте? |