mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-08 11:19:16 +02:00
TAChart: Support errorbars in TAreaSeries.
This commit is contained in:
parent
4a975e2e79
commit
6455279789
@ -58,6 +58,9 @@
|
||||
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
<Linking>
|
||||
<Debugging>
|
||||
<DebugInfoType Value="dsDwarf3"/>
|
||||
</Debugging>
|
||||
<Options>
|
||||
<Win32>
|
||||
<GraphicApplication Value="True"/>
|
||||
|
@ -6,8 +6,8 @@ object MainForm: TMainForm
|
||||
Caption = 'MainForm'
|
||||
ClientHeight = 601
|
||||
ClientWidth = 1136
|
||||
LCLVersion = '3.99.0.0'
|
||||
OnCreate = FormCreate
|
||||
LCLVersion = '2.3.0.0'
|
||||
object Chart1: TChart
|
||||
Left = 208
|
||||
Height = 601
|
||||
@ -16,6 +16,8 @@ object MainForm: TMainForm
|
||||
AxisList = <
|
||||
item
|
||||
Grid.Color = clSilver
|
||||
AxisPen.Width = 2
|
||||
AxisPen.Visible = True
|
||||
Marks.LabelBrush.Style = bsClear
|
||||
Minors = <>
|
||||
Title.LabelFont.Orientation = 900
|
||||
@ -24,6 +26,8 @@ object MainForm: TMainForm
|
||||
item
|
||||
Grid.Color = clSilver
|
||||
Alignment = calBottom
|
||||
AxisPen.Width = 2
|
||||
AxisPen.Visible = True
|
||||
Marks.LabelBrush.Style = bsClear
|
||||
Minors = <>
|
||||
Title.LabelBrush.Style = bsClear
|
||||
@ -106,6 +110,13 @@ object MainForm: TMainForm
|
||||
YErrorBars.Pen.Color = clGreen
|
||||
YErrorBars.Visible = True
|
||||
end
|
||||
object Chart1AreaSeries1: TAreaSeries
|
||||
Active = False
|
||||
Title = 'Area'
|
||||
AreaBrush.Color = clYellow
|
||||
AreaLinesPen.Style = psClear
|
||||
Source = RandomChartSource1
|
||||
end
|
||||
end
|
||||
object Panel1: TPanel
|
||||
Left = 0
|
||||
@ -125,14 +136,14 @@ object MainForm: TMainForm
|
||||
Left = 8
|
||||
Height = 19
|
||||
Top = 574
|
||||
Width = 61
|
||||
Width = 59
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Rotated'
|
||||
OnChange = CbRotatedChange
|
||||
TabOrder = 0
|
||||
OnChange = CbRotatedChange
|
||||
end
|
||||
object GbXErr: TGroupBox
|
||||
AnchorSideLeft.Control = Panel1
|
||||
@ -159,13 +170,13 @@ object MainForm: TMainForm
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 33
|
||||
Width = 66
|
||||
Width = 64
|
||||
BorderSpacing.Top = 10
|
||||
Caption = 'constant'
|
||||
Checked = True
|
||||
OnChange = RbXErrConstChange
|
||||
TabOrder = 4
|
||||
TabStop = True
|
||||
OnChange = RbXErrConstChange
|
||||
end
|
||||
object RbXErrPercent: TRadioButton
|
||||
AnchorSideLeft.Control = RbXErrConst
|
||||
@ -174,11 +185,11 @@ object MainForm: TMainForm
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 56
|
||||
Width = 79
|
||||
Width = 77
|
||||
BorderSpacing.Top = 4
|
||||
Caption = 'percentage'
|
||||
OnChange = RbXErrPercentChange
|
||||
TabOrder = 0
|
||||
OnChange = RbXErrPercentChange
|
||||
end
|
||||
object RbXErrChartSource: TRadioButton
|
||||
AnchorSideLeft.Control = RbXErrConst
|
||||
@ -187,11 +198,11 @@ object MainForm: TMainForm
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 79
|
||||
Width = 72
|
||||
Width = 70
|
||||
BorderSpacing.Top = 4
|
||||
Caption = 'individual'
|
||||
OnChange = RbXErrChartSourceChange
|
||||
TabOrder = 1
|
||||
OnChange = RbXErrChartSourceChange
|
||||
end
|
||||
object EdXErrConst: TFloatSpinEdit
|
||||
AnchorSideLeft.Control = RbXErrPercent
|
||||
@ -200,10 +211,10 @@ object MainForm: TMainForm
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = GbXErr
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 119
|
||||
Left = 117
|
||||
Height = 23
|
||||
Top = 31
|
||||
Width = 61
|
||||
Width = 63
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 24
|
||||
@ -211,9 +222,9 @@ object MainForm: TMainForm
|
||||
DecimalPlaces = 1
|
||||
Increment = 0.1
|
||||
MaxValue = 2
|
||||
OnChange = EdXErrConstChange
|
||||
TabOrder = 2
|
||||
Value = 1
|
||||
OnChange = EdXErrConstChange
|
||||
end
|
||||
object EdXErrPercent: TFloatSpinEdit
|
||||
AnchorSideLeft.Control = RbXErrPercent
|
||||
@ -222,20 +233,20 @@ object MainForm: TMainForm
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = EdXErrConst
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 119
|
||||
Left = 117
|
||||
Height = 23
|
||||
Top = 54
|
||||
Width = 61
|
||||
Width = 63
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 24
|
||||
DecimalPlaces = 1
|
||||
Increment = 2
|
||||
MaxValue = 100
|
||||
OnChange = EdXErrPercentChange
|
||||
TabOrder = 3
|
||||
Value = 10
|
||||
Visible = False
|
||||
OnChange = EdXErrPercentChange
|
||||
end
|
||||
object CbXErrShow: TCheckBox
|
||||
AnchorSideLeft.Control = GbXErr
|
||||
@ -243,14 +254,14 @@ object MainForm: TMainForm
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 4
|
||||
Width = 102
|
||||
Width = 100
|
||||
BorderSpacing.Left = 16
|
||||
BorderSpacing.Top = 4
|
||||
Caption = 'Show error bars'
|
||||
Checked = True
|
||||
OnChange = CbXErrShowChange
|
||||
State = cbChecked
|
||||
TabOrder = 5
|
||||
OnChange = CbXErrShowChange
|
||||
end
|
||||
object CbXErrDifferent: TCheckBox
|
||||
AnchorSideLeft.Control = CbXErrShow
|
||||
@ -259,12 +270,12 @@ object MainForm: TMainForm
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 106
|
||||
Width = 135
|
||||
Width = 133
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'asymmetric error bars'
|
||||
OnChange = CbXErrDifferentChange
|
||||
TabOrder = 6
|
||||
OnChange = CbXErrDifferentChange
|
||||
end
|
||||
end
|
||||
object GbYErr: TGroupBox
|
||||
@ -292,13 +303,13 @@ object MainForm: TMainForm
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 33
|
||||
Width = 66
|
||||
Width = 64
|
||||
BorderSpacing.Top = 10
|
||||
Caption = 'constant'
|
||||
Checked = True
|
||||
OnChange = RbYErrConstChange
|
||||
TabOrder = 4
|
||||
TabStop = True
|
||||
OnChange = RbYErrConstChange
|
||||
end
|
||||
object RbYErrPercent: TRadioButton
|
||||
AnchorSideLeft.Control = CbYErrShow
|
||||
@ -307,11 +318,11 @@ object MainForm: TMainForm
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 56
|
||||
Width = 79
|
||||
Width = 77
|
||||
BorderSpacing.Top = 4
|
||||
Caption = 'percentage'
|
||||
OnChange = RbYErrPercentChange
|
||||
TabOrder = 0
|
||||
OnChange = RbYErrPercentChange
|
||||
end
|
||||
object RbYErrChartSource: TRadioButton
|
||||
AnchorSideLeft.Control = CbYErrShow
|
||||
@ -320,11 +331,11 @@ object MainForm: TMainForm
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 79
|
||||
Width = 72
|
||||
Width = 70
|
||||
BorderSpacing.Top = 4
|
||||
Caption = 'individual'
|
||||
OnChange = RbYErrChartSourceChange
|
||||
TabOrder = 1
|
||||
OnChange = RbYErrChartSourceChange
|
||||
end
|
||||
object EdYErrConst: TFloatSpinEdit
|
||||
AnchorSideLeft.Control = RbYErrPercent
|
||||
@ -333,10 +344,10 @@ object MainForm: TMainForm
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = GbYErr
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 119
|
||||
Left = 117
|
||||
Height = 23
|
||||
Top = 31
|
||||
Width = 61
|
||||
Width = 63
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 24
|
||||
@ -344,9 +355,9 @@ object MainForm: TMainForm
|
||||
DecimalPlaces = 1
|
||||
Increment = 0.1
|
||||
MaxValue = 2
|
||||
OnChange = EdYErrConstChange
|
||||
TabOrder = 2
|
||||
Value = 1
|
||||
OnChange = EdYErrConstChange
|
||||
end
|
||||
object EdYErrPercent: TFloatSpinEdit
|
||||
AnchorSideLeft.Control = RbYErrPercent
|
||||
@ -355,20 +366,20 @@ object MainForm: TMainForm
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = EdYErrConst
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 119
|
||||
Left = 117
|
||||
Height = 23
|
||||
Top = 54
|
||||
Width = 61
|
||||
Width = 63
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 24
|
||||
DecimalPlaces = 1
|
||||
Increment = 2
|
||||
MaxValue = 100
|
||||
OnChange = EdYErrPercentChange
|
||||
TabOrder = 3
|
||||
Value = 10
|
||||
Visible = False
|
||||
OnChange = EdYErrPercentChange
|
||||
end
|
||||
object CbYErrShow: TCheckBox
|
||||
AnchorSideLeft.Control = GbYErr
|
||||
@ -376,14 +387,14 @@ object MainForm: TMainForm
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 4
|
||||
Width = 102
|
||||
Width = 100
|
||||
BorderSpacing.Left = 16
|
||||
BorderSpacing.Top = 4
|
||||
Caption = 'Show error bars'
|
||||
Checked = True
|
||||
OnChange = CbYErrShowChange
|
||||
State = cbChecked
|
||||
TabOrder = 5
|
||||
OnChange = CbYErrShowChange
|
||||
end
|
||||
object CbYErrDifferent: TCheckBox
|
||||
AnchorSideLeft.Control = CbYErrShow
|
||||
@ -392,12 +403,12 @@ object MainForm: TMainForm
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 106
|
||||
Width = 135
|
||||
Width = 133
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'asymmetric error bars'
|
||||
OnChange = CbYErrDifferentChange
|
||||
TabOrder = 6
|
||||
OnChange = CbYErrDifferentChange
|
||||
end
|
||||
end
|
||||
object RgChartSource: TRadioGroup
|
||||
@ -406,7 +417,7 @@ object MainForm: TMainForm
|
||||
Left = 8
|
||||
Height = 93
|
||||
Top = 8
|
||||
Width = 185
|
||||
Width = 183
|
||||
AutoFill = True
|
||||
AutoSize = True
|
||||
BorderSpacing.Around = 8
|
||||
@ -421,15 +432,15 @@ object MainForm: TMainForm
|
||||
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||
ChildSizing.ControlsPerLine = 1
|
||||
ClientHeight = 73
|
||||
ClientWidth = 181
|
||||
ClientWidth = 179
|
||||
ItemIndex = 0
|
||||
Items.Strings = (
|
||||
'RandomChartSource'
|
||||
'ListChartSource'
|
||||
'UserDefinedChartSource'
|
||||
)
|
||||
OnClick = RgChartSourceClick
|
||||
TabOrder = 3
|
||||
OnClick = RgChartSourceClick
|
||||
end
|
||||
object GbErrorBarStyle: TGroupBox
|
||||
AnchorSideLeft.Control = GbYErr
|
||||
@ -466,9 +477,9 @@ object MainForm: TMainForm
|
||||
BorderSpacing.Right = 8
|
||||
MaxValue = 5
|
||||
MinValue = 1
|
||||
OnChange = EdErrPenWidthChange
|
||||
TabOrder = 0
|
||||
Value = 1
|
||||
OnChange = EdErrPenWidthChange
|
||||
end
|
||||
object LblErrLineWidth: TLabel
|
||||
AnchorSideLeft.Control = GbErrorBarStyle
|
||||
@ -525,7 +536,6 @@ object MainForm: TMainForm
|
||||
BorderSpacing.Top = 4
|
||||
BorderSpacing.Right = 4
|
||||
BorderSpacing.Bottom = 4
|
||||
ItemHeight = 0
|
||||
TabOrder = 2
|
||||
end
|
||||
object StringGrid1: TStringGrid
|
||||
@ -557,7 +567,7 @@ object MainForm: TMainForm
|
||||
)
|
||||
end
|
||||
object RandomChartSource1: TRandomChartSource
|
||||
PointsNumber = 10
|
||||
PointsNumber = 11
|
||||
RandSeed = 56490104
|
||||
XMax = 10
|
||||
YMax = 10
|
||||
|
@ -17,6 +17,7 @@ type
|
||||
CbYErrDifferent: TCheckBox;
|
||||
CbYErrShow: TCheckBox;
|
||||
Chart1: TChart;
|
||||
Chart1AreaSeries1: TAreaSeries;
|
||||
Chart1BSplineSeries1: TBSplineSeries;
|
||||
Chart1CubicSplineSeries1: TCubicSplineSeries;
|
||||
Chart1FitSeries1: TFitSeries;
|
||||
@ -135,6 +136,9 @@ begin
|
||||
|
||||
Chart1FitSeries1.AxisIndexX := Chart1lineSeries1.AxisIndexX;
|
||||
Chart1FitSeries1.AxisIndexY := Chart1LineSeries1.AxisIndexY;
|
||||
|
||||
Chart1AreaSeries1.AxisIndexX := Chart1LineSeries1.AxisIndexX;
|
||||
Chart1AreaSeries1.AxisIndexY := Chart1LineSeries1.AxisIndexY;
|
||||
end;
|
||||
|
||||
procedure TMainForm.CbXErrShowChange(Sender: TObject);
|
||||
@ -143,6 +147,7 @@ begin
|
||||
Chart1BSplineSeries1.XErrorBars.Visible := CbXErrShow.Checked;
|
||||
Chart1CubicSplineSeries1.XErrorBars.Visible := CbXErrShow.Checked;
|
||||
Chart1FitSeries1.XErrorBars.Visible := CbXErrShow.Checked;
|
||||
Chart1AreaSeries1.XErrorBars.Visible := CbXErrShow.Checked;
|
||||
end;
|
||||
|
||||
procedure TMainForm.CbXErrDifferentChange(Sender: TObject);
|
||||
@ -161,6 +166,7 @@ begin
|
||||
Chart1BSplineSeries1.YErrorBars.Visible := CbYErrShow.Checked;
|
||||
Chart1CubicSplineSeries1.YErrorBars.Visible := CbYErrShow.Checked;
|
||||
Chart1FitSeries1.YErrorBars.Visible := CbYErrShow.Checked;
|
||||
Chart1AreaSeries1.YErrorBars.Visible := CbYErrShow.Checked;
|
||||
end;
|
||||
|
||||
procedure TMainForm.Chart1AfterPaint(ASender: TChart);
|
||||
@ -201,11 +207,13 @@ begin
|
||||
Chart1BSplineSeries1.XErrorBars.Pen.Style := CbErrPenStyle.PenStyle;
|
||||
Chart1CubicSplineSeries1.XErrorBars.Pen.Style := CbErrPenStyle.PenStyle;
|
||||
Chart1FitSeries1.XErrorBars.Pen.Style := CbErrPenStyle.PenStyle;
|
||||
Chart1AreaSeries1.XErrorBars.Pen.Style := CbErrPenStyle.PenStyle;
|
||||
|
||||
Chart1LineSeries1.YErrorBars.Pen.Style := CbErrPenStyle.PenStyle;
|
||||
Chart1BSplineSeries1.YErrorBars.Pen.Style := CbErrPenStyle.PenStyle;
|
||||
Chart1CubicSplineSeries1.YErrorBars.Pen.Style := CbErrPenStyle.PenStyle;
|
||||
Chart1FitSeries1.YErrorBars.Pen.Style := CbErrPenStyle.PenStyle;
|
||||
Chart1AreaSeries1.YErrorBars.Pen.Style := CbErrPenStyle.PenStyle;
|
||||
end;
|
||||
|
||||
procedure TMainForm.EdXErrConstChange(Sender: TObject);
|
||||
@ -219,11 +227,13 @@ begin
|
||||
Chart1BSplineSeries1.XErrorBars.Pen.Width := EdErrPenWidth.Value;
|
||||
Chart1CubicSplineSeries1.XErrorBars.Pen.Width := EdErrPenWidth.Value;
|
||||
Chart1FitSeries1.XErrorBars.Pen.Width := EdErrPenWidth.Value;
|
||||
Chart1AreaSeries1.XErrorBars.Pen.Width := EdErrPenWidth.Value;
|
||||
|
||||
Chart1LineSeries1.YErrorBars.Pen.Width := EdErrPenWidth.Value;
|
||||
Chart1BSplineSeries1.YErrorBars.Pen.Width := EdErrPenWidth.Value;
|
||||
Chart1CubicSplineSeries1.YErrorBars.Pen.Width := EdErrPenWidth.Value;
|
||||
Chart1FitSeries1.YErrorBars.Pen.Width := EdErrPenWidth.Value;
|
||||
Chart1AreaSeries1.YErrorBars.Pen.Width := EdErrPenWidth.Value;
|
||||
end;
|
||||
|
||||
procedure TMainForm.StringGrid1PrepareCanvas(Sender: TObject; aCol, aRow: Integer;
|
||||
@ -270,6 +280,11 @@ end;
|
||||
|
||||
procedure TMainForm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Chart1AreaSeries1.XErrorBars.Visible := true;
|
||||
Chart1AreaSeries1.YErrorBars.Visible := true;
|
||||
Chart1AreaSeries1.XErrorBars.Pen.Color := clOlive;
|
||||
Chart1AreaSeries1.YErrorBars.Pen.Color := clOlive;
|
||||
|
||||
PopulateUserData;
|
||||
end;
|
||||
|
||||
@ -348,18 +363,21 @@ begin
|
||||
Chart1BSplineSeries1.Source := RandomChartSource1;
|
||||
Chart1CubicSplineSeries1.Source := RandomChartSource1;
|
||||
Chart1FitSeries1.Source := RandomChartSource1;
|
||||
Chart1AreaSeries1.Source := RandomChartSource1;
|
||||
end;
|
||||
1: begin
|
||||
Chart1LineSeries1.Source := ListChartSource1;
|
||||
Chart1BSplineSeries1.Source := ListChartSource1;
|
||||
Chart1CubicSplineSeries1.Source := ListChartSource1;
|
||||
Chart1FitSeries1.Source := ListChartSource1;
|
||||
Chart1AreaSeries1.Source := ListChartSource1;
|
||||
end;
|
||||
2: begin
|
||||
Chart1LineSeries1.Source := UserDefinedChartSource1;
|
||||
Chart1BSplineSeries1.Source := UserDefinedChartSource1;
|
||||
Chart1CubicSplineSeries1.Source := UserDefinedChartSource1;
|
||||
Chart1FitSeries1.Source := UserDefinedChartSource1;
|
||||
Chart1AreaSeries1.Source := UserDefinedChartSource1;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
@ -226,6 +226,8 @@ type
|
||||
read FUseZeroLevel write SetUseZeroLevel default false;
|
||||
property ZeroLevel: Double
|
||||
read FZeroLevel write SetZeroLevel stored IsZeroLevelStored;
|
||||
property XErrorBars;
|
||||
property YErrorBars;
|
||||
end;
|
||||
|
||||
TSeriesPointerDrawEvent = procedure (
|
||||
|
Loading…
Reference in New Issue
Block a user