Как показать процентное значение для каждой области графика на гистограмме OfficeOpenXML или EPPlus C#? [дубликат]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как показать процентное значение для каждой области графика на гистограмме OfficeOpenXML или EPPlus C#? [дубликат]

Сообщение Anonymous »

У меня есть гистограмма, в которой я хочу показать процент для каждой метки (80% для метки PDD1).
Изображение

Поэтому я добавил процентные записи, но не могу скрыться от диаграммы и показать их в верхней середине каждой области метки.
Я попробовал решение для некоторых статей ( https://stackoverflow.com/a/9036445/11010986 ), но не вижу опции LoadEntries в OfficeOpenXml.Drawing.Chart

Код: Выделить всё

chart1.Legend.LoadEntries(chart1.Legend.LegendEntries().Count).Delete()

Я видел параметр «Записи», но он доступен только для чтения.
Изменить 1:
Данные для диаграммы:
Изображение

Блок кода C#:

Код: Выделить всё

dynamic DataList5 = new
{
label = new List() { "PDD1", "PDD2", "PDD3" },
modeler = new { Category1 = new List() { 1, 1, 1 }, Category2 = new List() { 0, 0, 0 } },
tester = new { Category1 = new List() { 2, 2, 2 }, Category2 = new List() { 2, 2, 2 } },
percentage = new List() { 150, 200, 10 }
};

if (DataList5.label.Count > 0)
{
int j = 0;
for (int i = 0; i < DataList5.label.Count * 2; i++)
{
if (i % 2 == 0)
{
ws2.Cells[i + 2, 2].Value = DataList5.label[j];
ws2.Cells[i + 2, 3].Value = "Category 1";
ws2.Cells[i + 2, 4].Value = DataList5.modeler.Category1[j];
ws2.Cells[i + 2, 5].Value = DataList5.tester.Category1[j];
ws2.Cells[i + 2, 6].Value = DataList5.percentage[j];
}
else
{
ws2.Cells[i + 2, 3].Value = "Category 2";
ws2.Cells[i + 2, 4].Value = DataList5.modeler.Category2[j];
ws2.Cells[i + 2, 5].Value = DataList5.tester.Category2[j];
j++;
}
}
}
else
{
ws2.Cells[2, 2].Value = "No Data Found";
}
var chart1 = ws1.Drawings.AddChart("chart1", eChartType.ColumnStacked);
chart1.SetPosition(1, 0, 0, 0);
chart1.SetSize(1800, 400);
chart1.Style = eChartStyle.Style12;

if (DataList5.label.Count > 0)
{
var series1 = chart1.Series.Add(ws2.Cells["D2:D" + (DataList5.label.Count * 2 + 1)], ws2.Cells["B2:C" + (DataList5.label.Count * 2 + 1)]);
var series2 = chart1.Series.Add(ws2.Cells["E2:E" + (DataList5.label.Count * 2 + 1)], ws2.Cells["B2:C" + (DataList5.label.Count * 2 + 1)]);
//percentage series
//var series3 = chart1.Series.Add(ws2.Cells["F2:F" + (DataList5.label.Count * 2 + 1)], ws2.Cells["B2:C" + (DataList5.label.Count * 2 + 1)]);

series1.Fill.Color = Color.FromArgb(255, 0, 112, 192);
series2.Fill.Color = Color.FromArgb(255, 239, 125, 49);

//Show percentage for each PDD1 label
////chart1.Legend.LoadEntries(chart1.Legend.LegendEntries().Count).Delete();

series1.Header = "Modeler";
series2.Header = "Tester";
//series3.Header = "Percentage";

}
else
{
var series1 = chart1.Series.Add(ws2.Cells["B2:C" + (DataList1.label.Count + 1)], ws2.Cells["B2:C" + (DataList1.label.Count + 1)]);
}

chart1.Title.Text = "Stacked bar chart example";
Результат:
Изображение

Для меня проблема с отображением процентов.
даже PDD1 должен находиться между первыми двумя столбцами, но здесь это не является серьезной проблемой.
У кого-нибудь есть идеи по поводу решения на C# EPPlus или OfficeOpenXML?

Подробнее здесь: https://stackoverflow.com/questions/790 ... nxml-or-ep
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»