Как добавить текст поверх столбца с помощью ZedGraph? - PullRequest
2 голосов
/ 29 июля 2011

Как я могу добавить текст поверх столбца на графике.Это код, который я должен добавить бар:

var color = ColorTranslator.FromHtml(row.Colour);
var barItem = graphPane.AddBar(row.Propensity.ToString(), null, Ys.ToArray(), color);

Спасибо

Ответы [ 3 ]

6 голосов
/ 01 августа 2011

Вот краткий пример использования 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();

Bar chart with labels

Конечно, это просто использует значение данных в качестве метки. Если вы хотите использовать пользовательские метки, вы можете создать строковый массив или список и использовать их внутри цикла.

Вот некоторые ссылки на ZedGraph:

1 голос
/ 23 апреля 2014

Вам необходимо определить AlignH и AlignV в вашем текстовом объекте:

TextObj textLabel = new TextObj(value.ToString(), positionX, value, CoordType.AxisXYScale, AlignH.Center, AlignV.Top);

AlignV определяет положение вашего значения на панели.

0 голосов
/ 12 августа 2013

Если вы хотите, чтобы текст метки соответствовал значению каждой строки, то вы можете сделать это с помощью одной строки кода:

BarItem.CreateBarLabels(graphPane, false, "F0");

Обратите внимание, что третий параметр имеет формат double.ToString.например, "F0" = 12, "F2" = 12.34

Однако, если вам нужна гибкость, тогда это решение не идеально.Это также не очень хорошо работает, если у вас есть гистограмма с накоплением, потому что наличие любых значений 0 приведет к тому, что метки будут перекрываться и выглядеть ужасно

...