2016-10-27 14 views
1

これは実際に私がここでやっている簡単な作業です。 1つのChartAreaに2つのシリーズをStackedColumnと1つのPointシリーズとしてまとめて配置する必要があります。以下はコードです。 各シリーズには、テスト目的で3つのデータポイントしかありません。StackedColumnグラフに奇妙な列の幅が表示される

結果のグラフは、下の最初の図を参照してください。積み重ねた列の幅は細く見えます。 Pointシリーズのデータ​​を3か月間に1ヶ月に1ポイントに変更すると、スタックされた列の幅はちょうど良く見えます(図2)。また、s1とs2にStackedColumnの代わりにColumnを使用すると、Pointシリーズs3のどのデータに関係なく、列の幅はすべて良好になります(図3)。

誰もがここで起こって、どのように絵にMSDN on StackedColumnを1として1

 Series s1 = new Series("s1");    
     s1.ChartType = SeriesChartType.StackedColumn; 
     //s1.ChartType = SeriesChartType.Column; 
     s1.XValueType = ChartValueType.Date; 
     s1.Points.Add(new DataPoint((new DateTime(2016, 1, 1)).ToOADate(), 100)); 
     s1.Points.Add(new DataPoint((new DateTime(2016, 2, 1)).ToOADate(), 100)); 
     s1.Points.Add(new DataPoint((new DateTime(2016, 3, 1)).ToOADate(), 100)); 

     Series s2 = new Series("s2"); 
     s2.ChartType = SeriesChartType.StackedColumn; 
     //s2.ChartType = SeriesChartType.Column; 
     s2.XValueType = ChartValueType.Date; 
     s2.Points.Add(new DataPoint((new DateTime(2016, 1, 1)).ToOADate(), 200)); 
     s2.Points.Add(new DataPoint((new DateTime(2016, 2, 1)).ToOADate(), 200)); 
     s2.Points.Add(new DataPoint((new DateTime(2016, 3, 1)).ToOADate(), 200)); 

     Series s3 = new Series("s3"); 
     s3.ChartType = SeriesChartType.Point; 
     s3.XValueType = ChartValueType.Date; 
     s3.Points.Add(new DataPoint((new DateTime(2016, 1, 1)).ToOADate(), 400)); 
     s3.Points.Add(new DataPoint((new DateTime(2016, 1, 4)).ToOADate(), 400)); 
     s3.Points.Add(new DataPoint((new DateTime(2016, 1, 7)).ToOADate(), 400)); 
     //s3.Points.Add(new DataPoint((new DateTime(2016, 1, 1)).ToOADate(), 400)); 
     //s3.Points.Add(new DataPoint((new DateTime(2016, 2, 4)).ToOADate(), 400)); 
     //s3.Points.Add(new DataPoint((new DateTime(2016, 3, 7)).ToOADate(), 400)); 

     cht.Series.Add(s1); cht.Series.Add(s2); cht.Series.Add(s3); 

     cht.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Months; 
     cht.ChartAreas[0].AxisX.Interval = 1; 
     cht.ChartAreas[0].AxisX.MajorGrid.Enabled = false; 
     cht.ChartAreas[0].AxisY.MajorGrid.Enabled = false; 

Picture 1

Picture 2

Picture 3

+0

私は周りを歩き回っていました:スタックされた列とポイントシリーズを分離しているが重なっている透明なChartAreasに入れてください。私はスタックされた列のグラフの背景にいくつかの特別な対処があることは知っていますが。私は誰かがそれについていくつかの光を当てることを願っています。聞こえますか、タウ? :) – uqji

+0

はい、私はここにいます:-) - 私の答えを見ましたか? – TaW

+0

@uqjiあなたの投稿にコメントしていないユーザーは、あなたがそれらに言及すると通知されません。何らかの理由であなたの質問の下にコメントしていない人に通知したい場合は、あなたの投稿の1つにコメントを投稿する必要があります。 –

答えて

1

を問題を修正するために何を説明でき:

積み重ねられたシリーズを整列させる必要があります。そうでない場合、データポイントは が間違ってレンダリングされます。詳細については、Aligning Dataを参照してください。ここで

では述べている:彼らはデータポイントの数が同じ とそれに対応するX値で同じデータを持っている場合

二つのシリーズが整列していると考えられます。

PointStackedColumnシリーズが揃っていないので、列が欠落している列のための部屋を作ります。 1つ以上(複数の系列が積み重ねられる):シリーズの

番号:あなたはので、より多くのポイントを積み重ね列よりも、表示したい場合

この

は本当に回避することはできません。

あなたは最初のものでオーバーレイChartAreaにしようとした後、点列を追加することができます。 here for two examplesを参照してください。 2番目のグラフエリアとその軸を設定する正しい方法を見つけるためにいくつかのテストが必要な場合があります。

+0

ありがとう@TaWありがとうございます。私は、ChartAreasをオーバーレイしてそのルートを下っています。 stackedColumnは何か特別な扱いに値する特別なものだと私は認めます。 – uqji

関連する問題