Управление визуальными стилями отдельных линий сетки - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть c# RangeBar chart с примерно 25 метками на AxisX.В зависимости от моих текущих данных, некоторые из этих меток имеют видимые точки данных на графике.Обычно около 3/4 из 25 меток не имеют точек данных.Все горизонтальные линии сетки включены, что делает график немного загроможденным.Особенно для точек данных, которые находятся дальше от AxisY, трудно сразу определить, к какой метке на AxisX они принадлежат.

Моя идея состоит в том, чтобы дифференцировать метки AxisX, которые имеют видимые точки данных, либо путемих линии сетки другого цвета, другого стиля или для полного удаления линий сетки меток AxisX, у которых нет соответствующих точек данных.Это вообще возможно?Поскольку все контролируемые свойства и документация, которые я обнаружил до сих пор, касаются стилей линий сетки всей диаграммы.

Кстати: показывать только метки AxisX, имеющие точки данных, нельзя.Заранее спасибо.

1 Ответ

0 голосов
/ 28 ноября 2018

Чтобы уменьшить беспорядок, вы можете использовать свойство axis.Interval.

Но каждая строка по-прежнему будет иметь такой же стиль , как основной, так и вспомогательной.

Вы можете добавить VerticalLineAnnotations для выбранных точек или попробовать StripLines.Оба могут быть стилизованы свободно.

Вот пример нормальной линейной диаграммы со случайным образом добавленными линиями к нескольким точкам: enter image description here

Тот же результат можетбыть достигнутым либо Annotations или Striplines.Синие линии StripLine и красные Annotations.Вот две функции для добавления цветной линии к DataPoint:

void AddStripLine(Chart chart, ChartArea ca, DataPoint dp, Color col)
{
    Axis ax = ca.AxisX;
    StripLine sl = new StripLine();
    sl.BorderColor = col;
    sl.IntervalOffset = dp.XValue;
    sl.Interval = 0;
    sl.StripWidth  = 0;
    sl.BorderWidth  = 1;
    ax.StripLines.Add(sl);
}

Если вы посмотрите очень внимательно, вы увидите, что единственное визуальное отличие состоит в том, что первые находятся ниже, а последние выше всех других.элементы диаграммы.

void AddAnnotation(Chart chart, ChartArea ca, DataPoint dp, Color col)
{
    Axis ay = ca.AxisY;
    VerticalLineAnnotation vl = new VerticalLineAnnotation();
    vl.LineColor = col;
    vl.AnchorDataPoint = dp;
    vl.IsInfinitive = true;
    vl.LineWidth = 1;
    vl.Height = ay.Maximum - ay.Minimum;
    vl.ClipToChartArea = ca.Name;
    chart.Annotations.Add(vl);
}

Для Bar диаграмм используйте HorizontalLineAnnotations и привязывайте к правильной оси ...

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

Также обратите внимание, что оба типа линий линий привязаны к их DataPoints и будут перемещаться с ниминапример, при изменении размера диаграммы ..

...