2011-08-16 42 views
0

我已經創建了一個圖與下面的代碼:如何添加MsChart系列之間的差距?

ChartAmalkerd.Titles[0].Text = "xxxx"; 
     ChartAmalkerd.Series.Add("x"); 
     ChartAmalkerd.Series["x"].ChartType = SeriesChartType.Column; 
     ChartAmalkerd.Series["x"]["PointWidth"] = (0.5).ToString(); 
     ChartAmalkerd.Series["x"].Points.AddY(10); 
     ChartAmalkerd.Series["x"].IsValueShownAsLabel = true; 
     ChartAmalkerd.Series.Add("y"); 
     ChartAmalkerd.Series["y"].ChartType = SeriesChartType.Column; 
     ChartAmalkerd.Series["y"].Points.AddY(20); 
     ChartAmalkerd.Series["y"]["PointWidth"] = (0.5).ToString(); 
     ChartAmalkerd.Series["y"].IsValueShownAsLabel = true; 
     ChartAmalkerd.Series.Add("y"); 
     ChartAmalkerd.Series["z"].ChartType = SeriesChartType.Column; 
     ChartAmalkerd.Series["z"].Points.AddY(20); 
     ChartAmalkerd.Series["z"]["PointWidth"] = (0.5).ToString(); 
     ChartAmalkerd.Series["z"].IsValueShownAsLabel = true; 

但列在一起並且沒有列之間的任何間隙。 如何在列之間添加空隙?

回答

3

我通常會想出更簡單的解決方案,但由於我今晚沒有時間研究 - 我至少有半解決方案可以根據您的要求來滿足您的目的,所以我會給你一些開始。

如果您沒有爲此圖表類型設置X數據點,您遇到的是默認的mschart行爲。

如果您從未爲系列中的點設置x,則每個數據點'x'將由其系列+1中的數據點索引位置定義。您正在使用三個系列,每個系列都有一個數據點,因此您的示例中的所有點都會自動設置爲x值1。

在此基礎上,上述每一列將被擠壓在被繪製爲接近其自動生成的x值成爲可能,在此情況下,所有點爲x = 1。

有可能是一個更好的解決方法,然而,解決這個問題的方法之一是根據您計劃使用的系列/數據點的數量爲偏移量賦值x值。

如果你知道你將有三大系列,您可以添加適用於每個系列

例如獨特的偏移

chart1.Series["x"].Points.AddXY(chart1.Series["x"].Points.Count + 1 - 0.05, yValue); 
chart1.Series["y"].Points.AddXY(chart1.Series["y"].Points.Count + 1, yValue); 
chart1.Series["z"].Points.AddXY(chart1.Series["z"].Points.Count + 1 + 0.05, yValue); 

注意:如果你會發現有趣的「蟲」 /功能不要將'+ 1'添加到上面的系列「y」的數據點計數中。沒有它,系列'y'的第一個數據點將爲零。當您將事情置於零時,微軟圖表會假設您沒有設置任何內容並使用默認行爲。

如果您正在使用網格線,另一個hacky解決方法不太好,但它會起作用。

使用您的原始代碼,但添加白色邊框! 即,該添加到每個系列(或者只是中心繫列)

chart1.Series["y"].BorderWidth = 2; 
chart1.Series["y"].BorderColor = Color.White; 

解決方法的代碼示例我引用被針對上述您的代碼示例,其中有三個系列,每個與一個數據點,而可以是適合每個系列的更多系列和更多數據點,使其更具動態性。讓我知道如果你需要這樣的任務幫助,我會盡力讓你去。

如果我有時間在本週末研究一個不太冒險的回答,我會稍後返回並編輯此答案。祝你好運!

0
chart1.Series["y"].BorderWidth = 2; 
chart1.Series["y"].BorderColor = Color.Transparent; 

很好地工作。

+1

如果看起來很可能這是另一個答案的衍生物,那麼在該答案下從共享鏈接直接鏈接到該鏈接將僅表示該鏈接。 –

+0

我確實添加了一條評論,它只是上面發佈的答案的擴展,但它從我的帖子中刪除。此外,我確實張貼這只是因爲我不能添加評論。我從ms視覺建議列表中選擇了透明顏色,並且它工作正常。 –

+0

你包括一個關於它如何[不是答案]的說明(https://meta.stackoverflow.com/questions/346454/if-the-author-says-its-not-an-answer-can-we-採取他們的詞爲它) - 但它是,所以我把它拿出來。你*沒有提及任何關於它是一個擴展,或什麼,你應該有什麼。 –

相關問題