Гистограмма с выпуском (Forms MC Chart)

Я хочу нарисовать 52 столбчатых ряда в столбчатой ​​диаграмме, чтобы представить недели в году. Однако, как представляется, на графике есть проблема, как вы можете видеть на рисунке ниже:

введите описание изображения здесь

У меня есть 2 серии, которые я рисую с меткой, значением х, значением у. Например:

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

Однако, кажется, что есть разница между сериями стержней (иногда толще, иногда смелее), хотя я создаю их тем же методом:

  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
            }
        };

Как я могу предотвратить эту форму?

1 ответ

Эффект является эффектом округления, возникающим при наличии такого большого количества баров.

Чтобы избежать этого, вы должны убедиться, что InnerPlotPosition.HeightКоличество пикселей делится на 52.

Есть свойство сглаживания..:

chart.AntiAliasing = AntiAliasingStyles.All;

..но оно уже установлено All по умолчанию.

Расчет ближайшего размера не так прост, как хотелось бы. Вы можете увидеть здесь для методов, которые рассчитывают InnerPlotPosition и вы можете использовать ToRectangleF(); для принудительного расчета числа, пока график все еще использует автоматические значения.

Но так как эти числа выражены в процентах, а все остальные элементы, то есть заголовок, легенда и ось x с их надписями, все взвешивают, обратный расчет, чтобы найти работающее число, не только сложен, он также потерпит неудачу с каждым изменением размера Chart, И, очевидно, при добавлении больше очков..

Если вы можете жить без изменения размеров, вы можете найти подходящий chart.Size методом проб и ошибок, например, путем увеличения его нажатием кнопки: chart.Height += 1;

Но, по моему мнению, лучшее решение - это самостоятельно уменьшить ширину баров, например, так:

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

Эффект будет все еще происходить, но с большими промежутками это не будет столь заметно.

Другие вопросы по тегам