Сложенные столбцы диаграммы Microsoft, сгруппированные с не сложенными - PullRequest
4 голосов
/ 08 августа 2011

Я надеялся отобразить данные для 4 групп.Каждая группа имеет 1 столбец с накоплением и 1 столбец без накопления.Вот макет того, что мне нужно:

What i'm trying to do

Получить четыре группы легко, это дает мне то, что я хочу:

Series series = chart.Series.Add("Budget");
series.ChartType = SeriesChartType.Column;
series.Name = "Budget";
series.Points.Add(55);
series.Points.Add(10);
series.Points.Add(50);
series.Points.Add(50);

series  = chart.Series.Add("Actual");
series.ChartType = SeriesChartType.Column;
series.Name = "Actual";
series.Points.Add(80);
series.Points.Add(90);
series.Points.Add(10);
series.Points.Add(10);

the easy graph

Теперь я хочу сделать желтые столбики сложенными столбиками.Я экспериментировал с добавлением 3 серий;ChartType = Column, StackedColumn, StackedColumn.Но столбцы с накоплением появляются перед не сложенными столбцами.

what i'm getting

Возможно ли то, что я пытаюсь сделать?

Ответы [ 3 ]

2 голосов
/ 26 июля 2014

Под Серией Вызовите метод CustomPropertiesMethod и присвойте группам разные StackedGroupNames, например, если вы хотите, чтобы Серии 1 и 2 складывались, но чтобы ряд 3 был рядом с

Series1.CustomProperties = "StackedGroupName=Group1"; Series2.CustomProperties = "StackedGroupName=Group1"; Series3.CustomProperties = "StackedGroupName=Group2";

0 голосов
/ 23 ноября 2014

То, как я подошел к этому, состояло в том, чтобы обмануть данные оси X, чтобы они были смещены по обе стороны от «реальных» точек, а затем использовать пользовательские метки.Я не легко вставил.проверенный код, но я думаю, что он выглядит примерно так:

double pointWidth = 0.375;
double pointOffset = pointWidth * 0.5;
// Add first series - column
_Chart.Add("Series1");
_Chart.Series["Series1"].ChartType = SeriesChartType.Column;
_Chart.Series["Series1"]["PointWidth"] = pointWidth.ToString();
for (int ii = 0; ii < 10; ii++)
{
  _Chart.Series["Series1"].Points.AddXY(ii - pointOffset, YourYValueHere);
}
// Add second series - stacked column
_Chart.Add("Series2");
_Chart.Series["Series2"].ChartType = SeriesChartType.Column;
_Chart.Series["Series2"]["PointWidth"] = pointWidth.ToString();
for (int ii = 0; ii < 10; ii++)
{
  _Chart.Series["Series2"].Points.AddXY(ii + pointOffset, YourYValueHere);
}
// Add thrid series - stacked column
_Chart.Add("Series3");
_Chart.Series["Series3"].ChartType = SeriesChartType.Column;
_Chart.Series["Series3"]["PointWidth"] = pointWidth.ToString();
for (int ii = 0; ii < 10; ii++)
{
  _Chart.Series["Series3"].Points.AddXY(ii + pointOffset, YourYValueHere);
    _Chart.ChartAreas["Area1"].AxisX.CustomLabels.Add(
     ii - 0.5, ii + 0.5, ii);
}
_Chart.ChartAreas["Area1"].AxisX.Minimum = -0.5;
_Chart.ChartAreas["Area1"].AxisX.Maximum =
              _Chart.Series["Series3"].Points.Count - 0.5;
_Chart.ChartAreas["Area1"].AxisX.LabelStyle.IsEndLabelVisible = true;
_Chart.ChartAreas["Area1"].AxisX.IsMarginVisible = false;

Если эта штука StackedGroupName работает, это будет намного проще.Я собираюсь попробовать это.

0 голосов
/ 08 августа 2011

Возможно, я ошибаюсь, но серии отображаются в том же порядке, в котором они были добавлены.

...