1

我是新手,aspose.slides想知道是否可以创建此镜头描述中给出的条形图。

我要更新的图表的 y 轴从 -100 到 100,x 轴在 0 上,条形图应该在正侧向上或负向向下。

下面显示常规条形图的代码如下

// Instantiate PresentationEx class that represents PPTX file
PresentationEx pres = new PresentationEx("D:\\AsposeChart.pptx");

// Access first slide
SlideEx sld = pres.Slides[0];

// Add chart with default data
ChartEx chart = (ChartEx)sld.Shapes[0];

// Setting the index of chart data sheet 
int defaultWorksheetIndex = 0;

// Getting the chart data worksheet
ChartDataCellFactory fact = chart.ChartData.ChartDataCellFactory;

// Take first chart series
ChartSeriesEx series = chart.ChartData.Series[0];

// Now updating series data
fact.GetCell(defaultWorksheetIndex, 0, 1, "New_Series1");//modifying series name
series.Values[0].Value = 90;
series.Values[1].Value = 123;
series.Values[2].Value =44;

// Take Second chart series
series = chart.ChartData.Series[1];

// Now updating series data
fact.GetCell(defaultWorksheetIndex, 0, 2, "New_Series2");//modifying series name           
series.Values[0].Value = 23;
series.Values[1].Value = 67;
series.Values[2].Value = 99;

// Now, Adding a new series
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 3, "Series 3"), chart.Type);

// Take 3rd chart series
series = chart.ChartData.Series[2];

// Now populating series data
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 1, 3, 20));
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 2, 3, 50));
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 3, 3, 30));

chart.Type = ChartTypeEx.ClusteredCylinder;

// Save presentation with chart
pres.Write(@"D:\AsposeChartMoodified.pptx");
4

1 回答 1

0

我已经观察到您的要求并愿意分享您可以使用以下代码片段来生成所需图表的目的。我已经分享了可以在负区域渲染系列的示例代码。但是,存在一个小问题,即当呈现负值或小于水平比例值的值时,它们的填充颜色会被删除。

这是由于 Aspose.Slides 中缺少属性,我创建了 ID SLIDESNET-33821的问题(您可以通过此链接在 Aspose.Slides 产品支持论坛中跟踪此问题的状态)以提供功能支持。我还分享了突出显示缺失功能的图像,取消选中环绕的值将填充未填充的系列值。在我看来,如果您使用的是模板图表,那么这个问题甚至可能不会发生。但是你可以在你的最后验证这一点。

public static void addBarChart()
{
    PresentationEx pres = new PresentationEx();
    ChartEx chart = pres.Slides[0].Shapes.AddChart(ChartTypeEx.ClusteredColumn, 20, 20, 500, 400);
    //Setting values of Y-axis or Value axis
    chart.ValueAxis.IsAutomaticMaxValue = false;
    chart.ValueAxis.IsAutomaticMinValue = false;
    chart.ValueAxis.CrossType = CrossesTypeEx.Custom;
    chart.ValueAxis.MinValue = 0;
    chart.ValueAxis.MaxValue = 400;
    chart.ValueAxis.CrossAt = 100f;

    chart.ChartData.Series.Clear();
    int defaultWorksheetIndex = 0;
    //Getting the chart data worksheet
    ChartDataCellFactory fact = chart.ChartData.ChartDataCellFactory;

    //Adding new series
    int id=chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 1, "Series 1"), chart.Type);
    ChartSeriesEx series = chart.ChartData.Series[id];


    //Now populating series data

    series.Values.Add(fact.GetCell(defaultWorksheetIndex, 1, 1, 30));
    series.Values.Add(fact.GetCell(defaultWorksheetIndex, 2, 1, 150));
    series.Values.Add(fact.GetCell(defaultWorksheetIndex, 3, 1, 320));
    series.Values.Add(fact.GetCell(defaultWorksheetIndex, 4, 1, 80));

    series.Format.Fill.FillType = FillTypeEx.Solid;
    series.Format.Fill.SolidFillColor.Color = Color.Red;
    series.IsColorVaried = false;
    pres.Write("D:\\Aspose Data\\SampleChart.pptx");

}

PS,我的名字是 Nayyer,我是 Aspose 的开发布道者。

于 2012-11-30T12:38:26.987 回答