簡體   English   中英

帶問題的條形圖(表格MC圖表)

[英]Bar Chart with issue (Forms MC Chart)

我想在條形圖中繪制52個條形系列以表示一年中的幾周。 但是,圖表似乎存在問題,如下圖所示:

在此處輸入圖片說明

我有兩個用標簽,x值,y值繪制的系列。 例如:

chart1.Series["Data"].Points.AddXY("W1", 0, 168);
chart1.Series["Missing"].Points.AddXY("W1", 0, 0);

但是,盡管我使用相同的方法創建了bar系列,但它們之間似乎有所不同(某些類的程序有時更粗一些)。

  var series = new Series
        {
            Name = seriesName,
            ChartArea = chartAreaName,
            Color = color,
            ChartType = SeriesChartType.RangeBar,
            XValueType = ChartValueType.Auto,
            YValueType = ChartValueType.Auto,
            SmartLabelStyle = new SmartLabelStyle
            {
                AllowOutsidePlotArea = LabelOutsidePlotAreaStyle.Yes,
                MovingDirection = LabelAlignmentStyles.Right,
                IsMarkerOverlappingAllowed = false
            }
        };

如何防止這種形式發生?

該效果是由於具有如此大量的條而導致的舍入效果。

為了避免這種情況,您必須確保InnerPlotPosition.Height的像素數可以被52整除。

有一個抗鋸齒屬性..:

chart.AntiAliasing = AntiAliasingStyles.All;

..但默認情況下已將其設置為All

計算最接近的大小並不像希望的那么簡單。 您可以在此處看到用於計算InnerPlotPosition方法,並且可以使用ToRectangleF(); 在圖表仍使用自動值時強制執行計算數字。

但是,由於這些數字以百分比表示,並且其他元素(即標題,圖例和帶有標簽的x軸)都處於權衡狀態,因此反轉計算以找到有效的數字不僅困難,而且每次調整大小都會失敗。 Chart 而且,顯然,當添加更多點時。

如果您可以生存而無需調整大小,則可以找到合適的chart.Size通過反復試驗來確定大小,例如通過將其增大來單擊按鈕: chart.Height += 1;

但是,imo最好的解決方案是自己以受控方式減小鋼筋的寬度 ,也許是這樣的:

  yourSeries.SetCustomProperty("PixelPointWidth", "3");

效果仍然會減弱,但是差距更大不會那么明顯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM