Попытка создать гистограмму с помощью ZedGraph - PullRequest
3 голосов
/ 10 октября 2010

Я пытаюсь создать гистограмму с помощью ZedGraph.

Все столбцы и данные хороши, нужно только, чтобы мои столбцы были между тиками, а не прямо на тиках.

Пример данных:

1, 4
2, 8
3, 1

Имеющиеся у меня средства:

4 items that are >= 0 and < 1
8 items that are >= 1 and < 2
1 item that is >= 2 and < 3

Так что в настоящее время мои бары, конечно, появляются непосредственно на тиках (значения x) 1, 2 и 3.

Но я хотел бы видеть:

  • первый бар между тиками 0 и 1,
  • второй бар между тиками 1 и 2 и
  • третий столбец между тиками 2 и 3

Какое свойство можно настроить для достижения этого?Сейчас я смотрю в XAxis и XAxis.Scale, но пока ничего не нашел ...

1 Ответ

3 голосов
/ 11 октября 2010

Вы, вероятно, не можете сделать это с обычным BarItem. Я использую объекты BoxObj для создания гистограммы.

Если histList - это PointPairList, содержащий ваши пары значений гистограммы (точка останова и значение), вы можете использовать:

for (int i = 0; i < histList.Count - 1; i++)
{
BoxObj box = new BoxObj(histList[i].X, histList[i].Y, histList[i + 1].X - histList[i].X, histList[i].Y);
box.IsClippedToChartRect = true;
box.Fill.Color = myColor;
pane.GraphObjList.Add(box);
}

Используя BoxObj, вы получаете полный контроль над положением панели и т. Д. Подробнее в документации

EDIT
Помните, что при использовании BoxObj (или любого GraphObj в целом) шкалы X и Y не будут устанавливаться автоматически. Вам необходимо установить диапазоны шкал вручную:

pane.XAxis.Scale.Min = ...
pane.XAxis.Scale.Max = ...
pane.YAxis.Scale.Min = ...
pane.YAxis.Scale.Max = ...
...