gpt4 book ai didi

delphi - 小刻度 TeeChart delphi 对数刻度

转载 作者:行者123 更新时间:2023-12-03 15:30:58 25 4
gpt4 key购买 nike

我对小刻度有一个非常具体的请求。我的客户想要一张根据不同年代具有不同数量的小刻度的图表。例如,如果十年小于 1,他需要 10 个标签(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)和以下小刻度(1.5, 2.5, 3.5, 4.5, 5.5) , 6.5, 7.5, 8.5 ,9.5)

如果十年是 1 到 2,他想要以下标签 (1, 2, 3, 4, 5, 6, 8, 10) 和以下小刻度 (1.5, 2.5, 3.5, 4.5, 5.5, 7) , 9)

非常感谢任何帮助。我找不到如何覆盖刻度线,因此我可以将它们放置在自定义点。不过,我已经找到了自定义标签。

谢谢

最佳答案

在这里回答你here 。我在这里发布了最后一个更复杂的示例的代码,其中使用自定义标签来绘制不规则标签,并创建一个 DrawMinorTick 函数来手动绘制不规则的自定义小刻度。

uses Series, TeCanvas;

procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
Chart1.View3D:=false;
Chart1.Legend.Visible:=false;

Chart1.AddSeries(TFastLineSeries).FillSampleValues(10);
for i:=0 to Chart1[0].Count-1 do
Chart1[0].XValue[i]:=i+1;

Chart1.Axes.Bottom.Items.Clear;
for i:=1 to 4 do
Chart1.Axes.Bottom.Items.Add(i, IntToStr(i));

Chart1.Axes.Bottom.Items.Add(7, '7');
Chart1.Axes.Bottom.Items.Add(10, '10');

Chart1.Axes.Bottom.MinorTickCount:=0;
end;

procedure TForm1.Chart1AfterDraw(Sender: TObject);
begin
DrawMinorTick(Chart1.Axes.Bottom, 1.5);
DrawMinorTick(Chart1.Axes.Bottom, 2.5);
DrawMinorTick(Chart1.Axes.Bottom, 5);
DrawMinorTick(Chart1.Axes.Bottom, 6);
DrawMinorTick(Chart1.Axes.Bottom, 8);
DrawMinorTick(Chart1.Axes.Bottom, 9);
end;

procedure TForm1.DrawMinorTick(axis: TChartAxis; value: double);
var XPos, YPos: Integer;
begin
Chart1.Canvas.Pen.Color:=axis.MinorTicks.Color;
Chart1.Canvas.Pen.Width:=axis.MinorTicks.Width;
Chart1.Canvas.Pen.Style:=axis.MinorTicks.Style;
if axis.Horizontal then
begin
XPos:=axis.CalcPosValue(value);
YPos:=axis.PosAxis+1;
Chart1.Canvas.Line(XPos, YPos, XPos, YPos+axis.MinorTickLength);
end
else
begin
XPos:=axis.PosAxis;
YPos:=axis.CalcPosValue(value);
Chart1.Canvas.Line(XPos, YPos, XPos-axis.MinorTickLength, YPos);
end;
end;

关于delphi - 小刻度 TeeChart delphi 对数刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13897509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com