Я пишу утилиту для отправки по электронной почте гистограммы с накоплением, которая отображает задачи для каждого человека. Прямо сейчас я использую PngExporter
в OxyPlot.WindowsForms
для экспорта графика, но я не могу понять, как управлять нижними границами изображения. Имена пользователей могут быть довольно длинными и будут выходить наружу, и я хотел бы расширить область рисования для нижней оси, чтобы все имена были видны.
Вот как это выглядит прямо сейчас
И вот код того, что у меня есть до сих пор
var plot = new PlotModel()
{
Title = "Mantis Report"
};
// CATEGORY AXIS CODE====================================
var categoryaxis = new CategoryAxis();
foreach (var e in employees)
categoryaxis.ActualLabels.Add(paddedString("Jebediah Kerman"));
categoryaxis.Angle = 30;
categoryaxis.AxisTickToLabelDistance = 10;
// CATEGORY AXIS CODE====================================
plot.Axes.Add(categoryaxis);
plot.Axes.Add(new LinearAxis());
var series = new ColumnSeries();
series.IsStacked = true;
int employeeindex = 0;
foreach (var employee in employees)
{
foreach (var entry in employee.Tasks)
{
series.Items.Add(new ColumnItem(entry.Value, employeeindex) { Color = colors[entry.Key] });
}
employeeindex++;
}
plot.Series.Add(series);
plot.LegendTitle = "legend";
plot.LegendPlacement = LegendPlacement.Outside;
foreach (string task in tasktypes)
{
var newseries = new ColumnSeries()
{
FillColor = colors[task]
, Title = task
};
plot.Series.Add(newseries);
}
paddedString()
добавляет длину заданной строки в пробел и возвращает ее. Это мой текущий подход к «переводу» этикетки, но сейчас я беспокоюсь о том, чтобы нарисовать остальную часть имени.
Я просмотрел страницу CategoryAxis
, но не могу найти способ расширить область осей, чтобы имена отображались полностью. И нет, я бы предпочел не просто сокращать имена пользователей.