Aspose Slides to Draw график с двойной осью Y без вторичной горизонтальной оси

Можно ли рисовать двойные Y-диаграммы без вторичной оси X (горизонтальная ось), используя API слайдов Aspose, учитывая, что у нас есть 2 серии, одна из которых ClusteredColumn, а другая - ScatterWithStraightLinesAndMarkers? (Здесь мы предполагаем, что значения для каждого ряда нанесены на левую и правую оси Y соответственно). Может кто-то помочь мне с этим? Заранее спасибо.

Кроме того, я также хотел узнать, поддерживает ли Aspose Slides Powerpoint Version 2013? Я вижу проблемы с моим слайдом, когда я устанавливаю стиль графика. К сожалению, я должен открыть и файл PPTX и исправить стиль диаграммы.

1 ответ

@KrithikaM,

Я соблюдаю ваши требования для построения диаграммы на нескольких осях. Я предлагаю вам, пожалуйста, попробовать использовать следующий пример кода, где я добавил кластерную диаграмму столбцов на одной оси и линии на другой. Я надеюсь, что общий образец будет полезен. Во-вторых, Aspose.Slides также поддерживает диаграммы MSO в PowerPoint. Если у вас есть какие-либо проблемы с символами, вы можете поделиться с нами, и мы рассмотрим их для вас.

public static void chartwithmultipleTypes()
{
    //Instantiate Presentation class that represents PPTX file//Instantiate Presentation class that represents PPTX file
    Presentation pres = new Presentation();

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

    // Add chart with default data
    IChart chart = sld.Shapes.AddChart(ChartType.ClusteredColumn, 0, 0, 500, 500);

    //Setting chart Title
    //chart.ChartTitle.TextFrameForOverriding.Text = "Sample Title";
    chart.ChartTitle.AddTextFrameForOverriding("Sample Title");
    chart.ChartTitle.TextFrameForOverriding.TextFrameFormat.CenterText = NullableBool.True;
    chart.ChartTitle.Height = 20;
    chart.HasTitle = true;

    //Set first series to Show Values
    chart.ChartData.Series[0].Labels.DefaultDataLabelFormat.ShowValue = true;

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

    //Getting the chart data worksheet
    IChartDataWorkbook fact = chart.ChartData.ChartDataWorkbook;

    //Delete default generated series and categories
    chart.ChartData.Series.Clear();
    chart.ChartData.Categories.Clear();
    int s = chart.ChartData.Series.Count;
    s = chart.ChartData.Categories.Count;

    //Adding new series
    chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 1, "Series 1"), chart.Type);
    chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 2, "Series 2"), chart.Type);

    //Adding new categories
    chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 1, 0, "Caetegoty 1"));
    chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 2, 0, "Caetegoty 2"));
    chart.ChartData.Categories.Add(fact.GetCell(defaultWorksheetIndex, 3, 0, "Caetegoty 3"));

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

    //Now populating series data

    series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 1, 1, 20));
    series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 2, 1, 50));
    series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 3, 1, 30));

    //Setting fill color for series
    series.Format.Fill.FillType = FillType.Solid;
    series.Format.Fill.SolidFillColor.Color = Color.Red;


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

    //Now populating series data
    series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 1, 2, 30));
    series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 2, 2, 10));
    series.DataPoints.AddDataPointForBarSeries(fact.GetCell(defaultWorksheetIndex, 3, 2, 60));

    //Setting fill color for series
    series.Format.Fill.FillType = FillType.Solid;
    series.Format.Fill.SolidFillColor.Color = Color.Green;


    //create custom labels for each of categories for new series

    //first label will be show Category name
    IDataLabel lbl = series.DataPoints[0].Label;
    lbl.DataLabelFormat.ShowCategoryName = true;

    lbl = series.DataPoints[1].Label;
    lbl.DataLabelFormat.ShowSeriesName = true;

    //Show value for third label
    lbl = series.DataPoints[2].Label;
    lbl.DataLabelFormat.ShowValue = true;
    lbl.DataLabelFormat.ShowSeriesName = true;
    lbl.DataLabelFormat.Separator = "/";


    /////Addding second type
    //Add new series
    series=chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 3, "Series 3"), ChartType.ScatterWithSmoothLines);


    //Add new point (1:3) there.
    series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 1, 3, 10), fact.GetCell(defaultWorksheetIndex, 1, 4, 13));

    //Add new point (2:10)
    series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 2, 3, 20), fact.GetCell(defaultWorksheetIndex, 2, 4, 15));



    //Changing the chart series marker
    series.Marker.Size = 10;
    series.Marker.Symbol = MarkerStyleType.Star;
    series.PlotOnSecondAxis = true;

    //Take second chart series
    series=chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 5, "Series 4"), ChartType.ScatterWithStraightLinesAndMarkers);

    //Add new point (5:2) there.
    series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 1, 5, 5), fact.GetCell(defaultWorksheetIndex, 1, 6, 2));

    //Add new point (3:1)
    series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 2, 5, 3), fact.GetCell(defaultWorksheetIndex, 2, 6, 1));

    //Add new point (2:2)
    series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 3, 5, 2), fact.GetCell(defaultWorksheetIndex, 3, 6, 2));

    //Add new point (5:1)
    series.DataPoints.AddDataPointForScatterSeries(fact.GetCell(defaultWorksheetIndex, 4, 5, 5), fact.GetCell(defaultWorksheetIndex, 4, 6, 1));

    //Changing the chart series marker
    series.Marker.Size = 10;
    series.Marker.Symbol = MarkerStyleType.Circle;

    series.PlotOnSecondAxis = true;


    //Save presentation with chart
    pres.Save("C:\Presentations\AsposeChart.pptx", SaveFormat.Pptx);
}

Я работаю разработчиком поддержки / евангелистом в Aspose.

Другие вопросы по тегам