2017-10-19 9 views
1

2つのボタンを備えた1つのチャートコントロールがあります。最初に燭台チャートを呼び出します.2番目のコールバーチャート。私はそれらのうちの1つだけを呼び出すとすべてが良いです。しかし、棒グラフX軸は0-15の範囲でなければなりません。彼らは見てどのようにMSチャートが間違ったX軸の値を示している

:formloadローソク足チャートで https://imgur.com/a/IICYh

はfirst.Everythingはまだ大丈夫ですロードされます。 棒グラフの[閉じる/開く]ボタンをクリックすると、左の棒グラフのX軸値が表示されます。

[閉じる]/[開く]を押した後の燭台チャートの[グラフ]ボタンをクリックすると、 Y軸の値が欠落しています。チャートを呼び出すための

方法:

public void CandleStickChartMain() 
    { 
     // clear the chart 
     if (ChartCandle.Series.Count > 0) this.ChartCandle.Series[0].Points.Clear(); 
     this.ChartCandle.Series.Clear(); 
     this.ChartCandle.Titles.Clear(); 


     //Clear Grid 
     ChartCandle.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineWidth = 0; 
     ChartCandle.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineWidth = 0; 

     //Series 
     ChartCandle.Series.Add("Date"); 
     ChartCandle.Series["Date"].YValuesPerPoint = 4; 
     ChartCandle.Series["Date"].XValueMember = "Day"; 
     ChartCandle.Series["Date"].YValueMembers = "High,Low,Open,Close"; 
     ChartCandle.Series["Date"].XValueType = ChartValueType.DateTime; 
     ChartCandle.Series["Date"].CustomProperties = "PriceDownColor=Red,PriceUpColor=Green"; 
     ChartCandle.Series["Date"]["OpenCloseStyle"] = "Triangle"; 
     ChartCandle.Series["Date"]["ShowOpenClose"] = "Both"; 
     ChartCandle.DataManipulator.IsStartFromFirst = true; 
     ChartCandle.Series["Date"].ChartType = SeriesChartType.Candlestick; 

     //Axis Y Minimum 
     ChartCandle.ChartAreas["ChartArea1"].AxisY.Minimum = Open.Min() - (Open.Min()/50); 

     //Data Binding 
     ChartCandle.DataSource = ChartDataTable; 
     ChartCandle.DataBind(); 

    } 


public void BarChart() 
    { 

     // clear the chart 
     if (ChartCandle.Series.Count > 0) this.ChartCandle.Series[0].Points.Clear(); 
     this.ChartCandle.Series.Clear(); 
     this.ChartCandle.Titles.Clear(); 

     // Set palette 
     this.ChartCandle.Palette = ChartColorPalette.Excel; 

     // Set title 
     this.ChartCandle.Titles.Add("Price Data Open/Close"); 

     //Add series 
     //Series Open 
     var seriesOpen = ChartCandle.Series.Add("Open"); 
     for (int i = 0; i < Open.Length; i++) 
     { 

      seriesOpen.Points.Add(Open[i]); 
     } 
     //Series Close 
     var SeriesClose = ChartCandle.Series.Add("Close"); 
     for (int i = 0; i < Close.Length; i++) 
     { 
      SeriesClose.Points.Add(Close[i]); 
     } 

     var chartAreaOpenClose = ChartCandle.ChartAreas[seriesOpen.ChartArea]; 

     // Zoom and scroll options 
     // set view range to [0,max] 
     chartAreaOpenClose.AxisX.Minimum = 0; 
     chartAreaOpenClose.AxisX.Maximum = Open.Length + 1; 

     // enable autoscroll 
     chartAreaOpenClose.CursorX.AutoScroll = true; 

     // let's zoom to [0,blockSize] (e.g. [0,100]) 
     chartAreaOpenClose.AxisX.ScaleView.Zoomable = true; 
     chartAreaOpenClose.AxisX.ScaleView.SizeType = DateTimeIntervalType.Number; 
     int position = 0; 
     int size = 15; 
     chartAreaOpenClose.AxisX.ScaleView.Zoom(position, size); 

     // disable zoom-reset button (only scrollbar's arrows are available) 
     chartAreaOpenClose.AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll; 

     // set scrollbar small change to blockSize (e.g. 100) 
     chartAreaOpenClose.AxisX.ScaleView.SmallScrollSize = 15; 

     // additional 
     ChartCandle.ChartAreas[0].AxisY.IsStartedFromZero = false; 

    } 
+0

ChartAreaに 'Candlestick'または' Stock'タイプのチャートを追加すると、 'Axis.IsStartedFromZero = false'の動作が中断されます。 – NekojiruSou

答えて

-1

私はあなたのデータのバインドを解除表示されません。おそらくChartCandle.DataSource = nullを設定する必要がありますか?

更新:

あなたの問題は、簡単に二つの異なるChartAreasを使用することにより解決される:

chart1.ChartAreas.Clear(); 
chart1.ChartAreas.Add("CandleChart"); 

chart1.Series.Clear(); 
chart1.Titles.Clear(); 

私は正しいを参照するメソッド内の各メソッドの始まりと各ChartArea参照にこれを追加名前:

chart1.ChartAreas["CandleChart"].AxisX.MajorGrid.LineWidth = 0; 
chart1.ChartAreas["CandleChart"].AxisY.MajorGrid.LineWidth = 0; //etc. 

期待される。ボタンはグラフ間を適切に切り替えます。

+0

'ChartCandle.DataSource = null;' ChartCandle.DataBind(); 'を ' BarChart() 'に追加しましたが、それでも同じです。 –

+0

@ B-Z私はデータを持っていないので、あなたのコードをかなりテストすることはできません。あなたはデータを含めることができますか? –

+0

データはpoloniexのapiから取得されます。 [例のデータ](https://poloni.com/public?command=returnChartData¤cyPair=BTC_XMR&start=1507633439&end=9999999999&period=14400) –

関連する問題