2014-09-25 88 views
-1

我是mschart新手,面臨一些問題。我從數據庫中讀取記錄並將它們繪製在圖表上。問題是:C#mschart系列對齊

  1. 當我將最大記錄值設置爲最大y軸值時,圖表只會被繪製。如果我嘗試設置y軸的最大值,例如最大值+50,我的圖表就會錯誤地繪製它。這裏是我的代碼:

    double y = 0; 
        foreach (Record record in records) 
        { 
         if (y < record.HighValue) 
          y = record.HighValue; 
        } 
    
        chart.ChartAreas["draw"].AxisY2.Minimum = 0; 
        chart.ChartAreas["draw"].AxisY2.Maximum = y; 
        chart.ChartAreas["draw"].AxisY2.Interval = y/10; 
    
        Series s = new Series(); 
        s.Name = seriesName; 
        s.IsXValueIndexed = true; 
        s.XValueType = ChartValueType.Date; 
        s.ChartType = SeriesChartType.Candlestick; 
        s.Color = Color.Black; 
    
        s["OpenCloseStyle"] = "Triangle"; 
        s["ShowOpenClose"] = "Both"; 
        s["PointWidth"] = "1.0"; 
        s["PriceUpColor"] = "Black"; 
    
        chart.Series.Add(s); 
    
        for (int i = 0; i < records.Count; i++) 
        { 
         s.Points.AddXY(records[i].CurrentDate, records[i].HighValue); 
         s.Points[i].YValues[1] = records[i].LowValue; 
         s.Points[i].YValues[2] = records[i].OpenValue; 
         s.Points[i].YValues[3] = records[i].CloseValue; 
        } 
    

圖表將顯示如下:

http://i57.tinypic.com/11ukyyt.png

現在,如果我試圖改變像Y軸最大值:

 chart.ChartAreas["draw"].AxisY2.Maximum = y*2; 

情節是這樣的:

http://i60.tinypic.com/11kzkba.png

現在,這是錯誤的,因爲你可以看到該系列是在錯誤的y軸位置

  • 我面臨的第二個問題是,當我放大圖表中,x軸正在變焦,但我無法放大Y軸。我想這線程,但無法得到的是「放大-x值」
  • MSChart - Auto Zoom Y Axis on X Axis Zoom

    回答

    0

    問題1個問題解決方法: 您的代碼不說你是設置一系列以對齊到次Y軸。 您需要添加這行代碼:

    s.YAxisType = AxisType.Secondary; 
    

    您正在使用的問題2時遇到的問題可能與我提出的解決方案對問題1,但我沒有很多的第一手經驗,使用變焦在mschart對象上。請詳細說明您'不縮放'的含義。你的意思是y軸值沒有改變?或者數據本身沒有在視覺上放大?

    編輯1 :(根據跟進評論) 如果您在縮放步驟中自己設置最小值,最大值或間隔Y軸值,請確保設置AxisY2.Minimum,AxisY2.Maximum,AxisY2 。上圖中顯示的軸的間隔是Y2軸,而不是Y.Y2軸是圖表右側的軸,AxisX2是顯示在圖表頂部的x軸。 (X2和Y2通常是默認禁用的,但您的圖像上面有Y2顯示值,因此需要將您的系列綁定到AxisType.Secondary)

    編輯2 :(基於搜索有關使用次軸進行縮放) 請參閱鏈接: How to zoom secondary y axis in mschart

    +0

    通過縮放我的意思是y軸將只包含涵蓋當前圖表範圍的最小值和最大值。例如,整個圖表最小= 100,最大= 500。現在,當我縮放到特定部分時,讓我們假設該部分的min = 350,max = 450,那麼這些值應該是圖表的最小值和最大值。 – Ashutosh 2014-12-09 10:58:50

    +0

    如上所述,將系列與正確軸關聯後,MSChart縮放應該正常運行。如果您正確設置了軸類型,並且它仍然存在縮放問題,請告訴我,如果時間允許,我將製作一個模型以進一步調查。 如果您正在設置最小值和最大值,請確保您正在分配AxisY2.Minimum和AxisY2.Maximum。 ('2'表示您使用的是頂部的軸而不是底部的X,或者圖表的右側的軸與圖表左側的軸相對應,用於Y) – JHubbard80 2014-12-10 18:39:06