zoukankan      html  css  js  c++  java
  • TCHART

    在使用 TeeChart 图表的过程中,经常会遇到坐标轴方面的问题。本文对TeeChart 坐标轴的相关问题进行了汇总:


    1、如何实现TeeChart图表坐标轴的放大与缩小功能?


    答:设置BottomAxis或者LeftAxis的Automatic:=false并同时设置Minimum,Maximum属性。


    2、如果Teechart的横坐标是时间(日期),如何进行设置?


    答:首先,你需要将X或者 Y坐标的日期时间DateTime属性设置为true:
    LineSeries1.XValues.DateTime := True ;
    其次,使用上面提到的方法,对日期,时间或则日期时间赋值:
    LineSeries1.AddXY( EncodeDate( 1996 , 1 , 23 ) , 25.4 , 'Barcelona' , clGreen );


    3、如何既固定TeeChart的坐标,又使坐标不跟随Series的变化而变化?


    答:请参考以下代码:

    1.  
      //设置底座标
    2.  
      with myChart.BottomAxis do
    3.  
      begin
    4.  
      Automatic:=false;
    5.  
      Minimum:=0;
    6.  
      LabelStyle := talText;
    7.  
      end;
    8.  
      //设置左坐标
    9.  
      with myChart.LeftAxis do
    10.  
      begin
    11.  
      Automatic:=false;
    12.  
      Minimum:=0;
    13.  
      Title.Angle:=270;
    14.  
      Title.Font:=Self.Font;
    15.  
      Title.Font.Charset:=ANSI_CHARSET;
    16.  
      Title.Font.Name:='@宋体';
    17.  
      Grid.Visible := False;
    18.  
      end;
    19.  
      //设置右坐标
    20.  
      with myChart.RightAxis do
    21.  
      begin
    22.  
      Automatic:=false;
    23.  
      Title.Font:=Self.Font;
    24.  
      Title.Font.Charset:=ANSI_CHARSET;
    25.  
      Title.Font.Name:='@宋体';
    26.  
      Title.Caption:='累计百分比(%)';
    27.  
      Maximum:=100;
    28.  
      Minimum:=0;
    29.  
      end;

    4、如何设置TeeChart图表横轴或者纵轴的增长率?

    答:请参考以下代码:

    1.  
      Chart.BottomAxis.Increment := DataTimeStep[ dtOneHour ] ;
    2.  
      Chart.RightAxis.Increment := 1000;

    5、如何对TeeChart自定义坐标轴进行放大缩小?


    答:可通过 TeeChart的Zoom属性进行设置。


    6、如何用代码将TeeChart的y轴分段?


    答:请参考以下代码:

    1.  
      // change the Left axis properties
    2.  
      Steema.TeeChart.Axis axis = this.tChart1.Axes.Left;
    3.  
       
    4.  
      axis.AxisPen.Color = Color.Red;
    5.  
      axis.StartPosition = 0;
    6.  
      axis.EndPosition = 32;
    7.  
       
    8.  
      // create custom axes. This can be done at design-time
    9.  
      Green = new TeeChart.Axis(tChart1.Chart);
    10.  
      this.tChart1.Axes.Custom.Add(Green);
    11.  
      Green.AxisPen.Color = Color.Green;
    12.  
      Green.StartPosition = 34;
    13.  
      Green.EndPosition = 65;
    14.  
       
    15.  
      Blue = new TeeChart.Axis(tChart1.Chart);
    16.  
      this.tChart1.Axes.Custom.Add(Blue);
    17.  
      Blue.AxisPen.Color = Color.Blue;
    18.  
      Blue.StartPosition = 67;
    19.  
      Blue.EndPosition = 100;


    7、如何让TeeChart的X轴显示时间,Y轴显示随机数?


    答:请参考以下代码:

    1.  
      void CTestTeeChartDlg::InitChart()
    2.  
      {
    3.  
      m_ctrlChart.Series(0).Clear();
    4.  
      m_ctrlChart.GetPage().SetMaxPointsPerPage(1440);
    5.  
       
    6.  
      COleDateTime CurTime = COleDateTime::GetCurrentTime();
    7.  
      COleDateTime tempTime ;
    8.  
      tempTime = CurTime;
    9.  
       
    10.  
      CurTime.SetTime(0,0,0);
    11.  
      CurTime.SetDate(tempTime.GetYear(),tempTime.GetMonth(),tempTime.GetDay());
    12.  
      COleDateTimeSpan tmSpan = COleDateTimeSpan(0,0,1,0);
    13.  
      CString csTime ;
    14.  
      for(int i=0; i<80; i++)
    15.  
      {
    16.  
      csTime = CurTime.Format("%H:%M");
    17.  
       
    18.  
      float fzVal = float(GetRandom(12000,28000)/100);
    19.  
      m_ctrlChart.Series(0).AddXY(i,fzVal,csTime,i);
    20.  
      CurTime += tmSpan;
    21.  
      }
    22.  
       
    23.  
      m_ctrlChart.GetAxis().GetLeft().SetMinMax(100, 300);
    24.  
      }


    8、设置TeeChart底部轴的最小值和最大值时,柱状图开始重叠?


    答:请参考以下代码:


    你可以改变BarWidthPercent来调整这些柱状。参考使用如下的代码:

    1.  
      private void InitializeChart()
    2.  
      {
    3.  
      tChart1.Aspect.View3D = false;
    4.  
      tChart1.Axes.Bottom.Automatic = false;
    5.  
      tChart1.Axes.Bottom.Minimum = 0;
    6.  
      tChart1.Axes.Bottom.Maximum = 10;
    7.  
      Steema.TeeChart.Styles.Bar bar = new Steema.TeeChart.Styles.Bar(tChart1.Chart);
    8.  
      bar.Add(1, 1000);
    9.  
      bar.Add(2, 1200);
    10.  
      bar.Add(3, 900);
    11.  
      bar.Add(4, 800);
    12.  
      bar.BarWidthPercent = 25;
    13.  
      }


    9、如何让TeeChart的Y轴始终显示在X轴的0上?


    答:通过调整Y轴的Position来实现,设置为50%,就可以让Y轴在X轴的0上。


    10、Teechart的Y轴时间用空缺导致空白问题:


    用barseries来显示条型图,其Y轴和X轴的值分别对应数据库里的一个浮点数值字段和一个日期字段,现在遇到一个问题,如果数据库里的日期少一天,图形显示出来就会有个空缺,很难看,比如2001-05-01接下来的数据只有2001-05-10的,中间就会缺一大段。把X轴设为非日期型虽然可以解决这个问题,但是GetCursorValues,XScreenTovalue,CalcPosPoint等函数计算出来的屏幕坐标到X轴的值就不对了。


    答:解决这个问题的办法是不要用日期型,把原来是日期型的字段改成整型,比如2001-05-01就改成整型数20010501,他的图形自然就连续了.GetCursorValues取到的鼠标
    数虽然不是已经转换好的数值,但是经过仔细观测,其实就是valueindex,只不过他很精确,是个浮点数而已,你只要这样就能得到x轴真正的值了:  
    GetcursorValues(Tx,Ty);
    Label1.Caption := GetVertAxis.LabelValue(tmpY);{Y轴的值}
    label2.caption := Xlabel[round(Tx)];{X轴实际值}

  • 相关阅读:
    分布式文件系统FastDFS详解
    DRF的@action装饰器
    django给视图添加缓存功能
    django自带的django.core.mail模块实现发邮件的功能
    ltsdangerous加密解密
    简单搞懂OAuth2.0
    django使用用户名或手机号码登录
    Spring --- 异常处理机制
    Javascript基于对象三大特征 -- 冒充对象
    SQL--相关子查询 与 非相关子查询
  • 原文地址:https://www.cnblogs.com/qiu18359243869/p/10544591.html
Copyright © 2011-2022 走看看