Как я могу добавить текст поверх столбца на диаграмме. Это код, который я должен добавить бар:
var color = ColorTranslator.FromHtml(row.Colour);
var barItem = graphPane.AddBar(row.Propensity.ToString(), null, Ys.ToArray(), color);
Спасибо
Как я могу добавить текст поверх столбца на диаграмме. Это код, который я должен добавить бар:
var color = ColorTranslator.FromHtml(row.Colour);
var barItem = graphPane.AddBar(row.Propensity.ToString(), null, Ys.ToArray(), color);
Спасибо
Вот краткий пример использования TextObj
для простого добавления меток к каждому столбцу.
GraphPane myPane = zedGraphControl1.GraphPane;
double[] y = { 100, 50, 75, 125 };
BarItem myBar = myPane.AddBar("Data", null, y, Color.Red);
for (int i = 0; i < myBar.Points.Count; i++)
{
TextObj barLabel = new TextObj(myBar.Points[i].Y.ToString(), myBar.Points[i].X, myBar.Points[i].Y + 5);
barLabel.FontSpec.Border.IsVisible = false;
myPane.GraphObjList.Add(barLabel);
}
myBar.Label.IsVisible = true;
zedGraphControl1.AxisChange();
zedGraphControl1.Invalidate();
Конечно, это просто использует значение данных в качестве метки. Если вы хотите использовать настраиваемые метки, вы можете создать массив строк или список и использовать их внутри цикла.
Вот несколько ссылок на ZedGraph:
Вам нужно определить AlignH и AlignV в вашем текстовом объекте:
TextObj textLabel = new TextObj(value.ToString(), positionX, value, CoordType.AxisXYScale, AlignH.Center, AlignV.Top);
AlignV определяет положение вашего значения на панели.
Если вы хотите, чтобы текст метки соответствовал значению каждого столбца, вы можете сделать это с помощью одной строки кода:
BarItem.CreateBarLabels(graphPane, false, "F0");
Обратите внимание, что третий параметр имеет формат double.ToString
. например "F0" = 12
, "F2" = 12.34
Однако, если вам нужна гибкость, это решение не идеально. Это также не очень хорошо работает, если у вас есть столбчатая диаграмма с накоплением, потому что любые данные со значениями 0
заставят метки перекрываться и выглядеть ужасно.