[英]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.