2013-03-04 25 views
0

我正在使用來自應用程序的C#窗口。我使用TeeChart for .net v3來繪製圖表。我可以爲每個圖形創建多個不同顏色的Y軸,如下圖所示。 enter image description here 現在我能夠顯示具有不同顏色的軸,但是我也想將相同的軸顏色分配給其軸的比例。請幫助我什麼財產我需要使用。如何更改軸比例的顏色在TeeChart

還有一個問題是如果我有多個軸,那麼它會佔用圖表上的很多空間來爲每個軸創建單獨的軸。我想水平分配軸的比例,而不是像現在這樣。請任何人可以幫我請什麼屬性我需要使用。 我想表示比例和軸,如下圖所示。 scale

在此先感謝。

回答

0

我做了一個簡單的代碼,我已經爲每個自定義軸實現了相同的縮放比例,並將所有座標軸自動放置在正確的位置。我想你可以使用類似的代碼爲未來努力實現你想要的:

public Form1() 
     { 
      InitializeComponent(); 
      InitializeChart(); 
     } 

     private DataSet GetData() 
     { 
      DataSet TeeDataSet = new DataSet(); 
      DateTime dt = DateTime.Today; 
      DataTable TeeDataTable = new DataTable("DataTable1"); 
      DataColumn xval = new DataColumn("DateTime", typeof(DateTime)); 
      DataColumn yval = new DataColumn("SystemName", typeof(double)); 

      TeeDataTable.Columns.Add(xval); 
      TeeDataTable.Columns.Add(yval); 
      Random rnd = new Random(); 
      for (int i = 0; i < 10; i++) 
      { 
       DataRow newRow = TeeDataTable.NewRow(); 
       newRow[xval] = dt; 
       newRow[yval] = rnd.Next(100); 
       TeeDataTable.Rows.Add(newRow); 
       dt = dt.AddMonths(1); 
      } 
      TeeDataSet.Tables.Add(TeeDataTable); 
      return TeeDataSet; 
     } 
     private void InitializeChart() 
     { 
      tChart1.Aspect.View3D = false; 
      tChart1.Header.Visible = false; 
      tChart1.Legend.Alignment = LegendAlignments.Bottom; 
      tChart1.Legend.CheckBoxes = true; 
      for (int i = 0; i < 5; i++) 
      { 
       new Steema.TeeChart.Styles.Line(tChart1.Chart); 
       tChart1[i].Title = "SystemName"; 
       tChart1[i].DataSource = GetData();//Add values using DataSource 
       tChart1[i].XValues.DataMember = "DateTime"; 
       tChart1[i].XValues.DateTime = true; 
       tChart1[i].XValues.Order = Steema.TeeChart.Styles.ValueListOrder.Ascending; 
       tChart1[i].YValues.DataMember = "SystemName"; 
       tChart1.Axes.Custom.Add(new Steema.TeeChart.Axis(tChart1.Chart)); 
       tChart1[i].CustomVertAxis = tChart1.Axes.Custom[i]; 
       tChart1.Axes.Custom[i].AxisPen.Color = tChart1[i].Color; 
       tChart1.Axes.Custom[i].Grid.Visible = false; 

       tChart1.Axes.Custom[i].PositionUnits = PositionUnits.Pixels; 
      } 

      tChart1.Panel.MarginUnits = PanelMarginUnits.Pixels; 
      tChart1.Panel.MarginTop = 20; 
      tChart1.Draw(); 
      PlaceAxes(0, 0, 0, 0, 0); 
      tChart1.AfterDraw += new PaintChartEventHandler(tChart1_AfterDraw); 
      tChart1.ClickLegend += new MouseEventHandler(tChart1_ClickLegend); 
      tChart1.Draw(); 
     } 

     void tChart1_ClickLegend(object sender, MouseEventArgs e) 
     { 
      tChart1.Draw(); 
     } 

     void tChart1_AfterDraw(object sender, Graphics3D g) 
     { 
      PlaceAxes(0, 0, 0, 0, 0); 
     } 

     private void PlaceAxes(int nSeries, int NextXLeft, int NextXRight, int MargLeft, int MargRight) 
     { 
      const int extraPos = 12; 
      const int extraMargin = 60; 
      //Variable 
      int MaxLabelsWidth; 
      int lenghtTicks; 
      int extraSpaceBetweenTitleAndLabels; 
      foreach (Steema.TeeChart.Styles.Line s in tChart1.Series) 
      { 
       if (s.Active) 
       { 
        s.CustomVertAxis.Visible = true; 
        s.CustomVertAxis.SetMinMax(tChart1[0].YValues.Minimum, tChart1[0].YValues.Maximum); 
        MaxLabelsWidth = s.CustomVertAxis.MaxLabelsWidth(); 
        lenghtTicks = s.CustomVertAxis.Ticks.Length; 
        extraSpaceBetweenTitleAndLabels = (s.CustomVertAxis.Title.Width);//- tChart1.Axes.Custom[nSeries].MaxLabelsWidth()); 
        if (s.CustomVertAxis.Title.Visible) 
        { 
         s.CustomVertAxis.RelativePosition = NextXLeft; 
         NextXLeft = NextXLeft - (MaxLabelsWidth + lenghtTicks + extraSpaceBetweenTitleAndLabels + extraPos); 
         MargLeft = MargLeft + extraMargin; 
        } 

        else 
        { 
         s.CustomVertAxis.RelativePosition = NextXLeft; 
         NextXLeft = NextXLeft - (MaxLabelsWidth + lenghtTicks + extraPos); 
         MargLeft = MargLeft + extraMargin; 
        } 

        tChart1.Panel.MarginLeft = MargLeft; 
        tChart1.Panel.MarginRight = MargRight; 

       } 
       else 
       { 
        s.CustomVertAxis.Visible = false; 
       } 
      } 
     } 

你能告訴我們,如果前面的代碼在你的最終作品?如果您有任何問題,請告訴我。

我希望能幫上忙。

謝謝,

+0

感謝您的重播。我沒有使用數據庫,我直接從傳感器獲取數據並更新圖表。如果我有三個傳感器連接,那麼它將爲這三個分配的顏色創建軸。我沒有使用你的代碼來繪製軸。上面的代碼我發佈了完美的工作。我已經添加了一點點代碼來初始化圖表可能是你可以看到的。如果你需要更多的信息,請問我。 – reddy 2013-03-05 13:35:01

+1

感謝您的信息。您對我所做的修改對我沒有幫助,但是我修改了我的代碼,因爲系列從DataSet獲取數據,並且對我來說工作正常。我認爲你可以使用我在代碼中添加的一些條件,方法或屬性,並將它應用到你的代碼中,以達到最終的效果。如果我的建議代碼不能幫助您,請將您的問題發送給我們一個簡單的示例代碼,因爲我們可以在這裏準確複製您的問題並嘗試爲您找到一個好的解決方案。謝謝, – 2013-03-06 13:35:44

+0

你能否知道我需要用哪個屬性來改變軸縮放字母的顏色。 – reddy 2013-03-07 10:10:16