Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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, 08:37
Цитата(sm1 @  8.4.2013,  03:33 Найти цитируемый пост)
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;


Уверен что разделом не ошибся? Больше на С-код похоже, а не на Delphi.

Автор: 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
Цитата(Poseidon @ 8.4.2013,  09:17)
А вообще что-то сам наделал. Только что попробовал. Ничего в настройках не менял, кроме добавления Series.

http://s2.ipicture.ru/Gallery/Viewfull/23731910.html


Спасибо за ответ. У меня следующие параметры графика:

  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
Цитата(sm1 @  8.4.2013,  09:20 Найти цитируемый пост)
То есть если и вверху и внизу  значения, длина которых меньше остальных, происходит неприятность. У Вас значение верхнее по длине такое же, как и в середине, поэтому не происходит такого эффекта.
ОК

http://s2.ipicture.ru/Gallery/Viewfull/23732791.html

Автор: sm1 8.4.2013, 09:39
Да, попробовал тот же самый код из дельфи7 в ХЕ3 перенести и получилось то же, что и у Вас. Но при этом либо минимум, либо максимум не видны на графике. Так изящно в последующих версиях вышли из ситуации на первом скриншоте?

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