เพิ่มเส้นแนวโน้มให้กับแผนภูมิพรีเซนเทชันใน .NET
ภาพรวม
บทความนี้อธิบายวิธีเพิ่มเส้นแนวโน้มให้กับแผนภูมิพรีเซนเทชันโดยใช้ Aspose.Slides รวมถึงการสร้างแผนภูมิ การเพิ่มเส้นแนวโน้มให้กับชุดข้อมูลของแผนภูมิ และการทำงานกับประเภทเส้นแนวโน้มหลายประเภท เช่น เอ็กซ์พอเนนเชียล, เชิงเส้น, ลอการิทึม, ค่าเฉลี่ยเคลื่อนที่, โพลิโนเมียลและพาวเวอร์
ยังอธิบายวิธีเพิ่มเส้นกำหนดเองลงในแผนภูมิโดยการแทรกรูปทรงเส้น และให้คำถามที่พบบ่อยสั้น ๆ เกี่ยวกับค่าการฉายเส้นแนวโน้มไปข้างหน้าและถอยหลัง รวมถึงว่าการส่งออกเป็น PDF หรือ SVG หรือการแปลงแผนภูมิเป็นรูปภาพจะคงเส้นแนวโน้มไว้หรือไม่
เพิ่มเส้นแนวโน้ม
ใช้ ITrendlineCollection.Add เพื่อเพิ่มเส้นแนวโน้มให้กับชุดข้อมูลของแผนภูมิ โดยเลือกประเภทด้วย TrendlineType ตัวอย่างสร้างแผนภูมิคอลัมน์แบบกลุ่มด้วยข้อมูลค่าเริ่มต้นและเพิ่มเส้นแนวโน้มสองเส้นให้กับแต่ละหนึ่งในสามชุดข้อมูลของมัน
เส้นแนวโน้มเอ็กซ์พอเนนเชียลซ่อนสมการและค่า R‑squared ผ่าน DisplayEquation และ DisplayRSquaredValue ส่วนเส้นแนวโน้มเชิงเส้นมีสีแดง เส้นแนวโน้มลอการิทึมใช้ AddTextFrameForOverriding เพื่อกำหนดป้ายกำกับแบบกำหนดเอง ค่าเฉลี่ยเคลื่อนที่ใช้ Period เป็นสามจุดข้อมูลและกำหนด TrendlineName แบบกำหนดเอง
เส้นแนวโน้มโพลิโนเมียลมี Order เป็นสามและขยายหนึ่งหมวดหมู่ไปข้างหน้าผ่าน Forward เส้นแนวโน้มพาวเวอร์ขยายหนึ่งหมวดหมู่ไปข้างหลังผ่าน Backward
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 20, 20, 500, 400);
var firstSeries = chart.ChartData.Series[0];
var exponentialTrendline = firstSeries.TrendLines.Add(TrendlineType.Exponential);
exponentialTrendline.DisplayEquation = false;
exponentialTrendline.DisplayRSquaredValue = false;
var linearTrendline = firstSeries.TrendLines.Add(TrendlineType.Linear);
linearTrendline.Format.Line.FillFormat.FillType = FillType.Solid;
linearTrendline.Format.Line.FillFormat.SolidFillColor.Color = Color.Red;
var secondSeries = chart.ChartData.Series[1];
var logarithmicTrendline = secondSeries.TrendLines.Add(TrendlineType.Logarithmic);
logarithmicTrendline.AddTextFrameForOverriding("New log trend line");
var movingAverageTrendline = secondSeries.TrendLines.Add(TrendlineType.MovingAverage);
movingAverageTrendline.Period = 3;
movingAverageTrendline.TrendlineName = "New TrendLine Name";
var thirdSeries = chart.ChartData.Series[2];
var polynomialTrendline = thirdSeries.TrendLines.Add(TrendlineType.Polynomial);
polynomialTrendline.Forward = 1;
polynomialTrendline.Order = 3;
var powerTrendline = thirdSeries.TrendLines.Add(TrendlineType.Power);
powerTrendline.Backward = 1;
presentation.Save("ChartTrendLines.pptx", SaveFormat.Pptx);
กำหนดจุดตัดของเส้นแนวโน้ม
ใช้ Intercept เพื่อกำหนดค่ามิติ Y ของเส้นแนวโน้มที่ X = 0 การตั้งค่านี้รองรับสำหรับเส้นแนวโน้มเชิงเส้น, เอ็กซ์พอเนนเชียลและโพลิโนเมียล
ตัวอย่างเช่น โมเดลต้นทุนการผลิตอาจต้องเริ่มจากต้นทุนคงที่ที่ทราบเป็น 100 แม้ว่าการวัดที่ปริมาณการผลิตที่ไม่เป็นศูนย์จะบ่งชี้ฐานค่าเริ่มต้นที่แตกต่าง สำหรับเส้นแนวโน้มเชิงเส้น การกำหนดจุดตัดทำให้สมการ y = ax + b มี b = 100; ความชันจะถูกฟิตให้เข้ากับข้อมูลภายใต้เงื่อนไขนั้น ไม่ได้ย้ายเส้นที่ฟิตแล้วแล้วเส้น การตั้งค่าการตัดแกนควบคุมจุดที่แกนของแผนภูมิตัดกัน ไม่ได้แก้ไขค่าสัมประสิทธิ์ของเส้นแนวโน้มที่ฟิตแล้ว
ตัวอย่างต่อไปนี้สร้างแผนภูมิกระจาย (XY) ที่มีปริมาณการผลิตตั้งแต่ 1 ถึง 4 และต้นทุน 170, 200, 230, 260 บันทึกแผนภูมิด้วยจุดตัดอัตโนมัติค่าเริ่มต้น แล้วตั้งค่าจุดตัดเป็น 100 และบันทึก PPTX ครั้งที่สอง ทั้งสองไฟล์แตกต่างกันเพียงการตั้งค่าจุดตัดเท่านั้น เส้นแนวโน้มแสดงสมการและขยายกลับไปที่ X = 0
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.ScatterWithMarkers, 20, 20, 480, 210);
chart.HasLegend = false;
chart.ChartData.Series.Clear();
chart.ChartData.Categories.Clear();
var workbook = chart.ChartData.ChartDataWorkbook;
workbook.Clear(0);
var nameCell = workbook.GetCell(0, 0, 1, "Production cost");
var series = chart.ChartData.Series.Add(nameCell, ChartType.ScatterWithMarkers);
double[] costs = { 170, 200, 230, 260 };
for (var i = 0; i < costs.Length; i++)
{
var xCell = workbook.GetCell(0, i + 1, 0, i + 1);
var yCell = workbook.GetCell(0, i + 1, 1, costs[i]);
series.DataPoints.AddDataPointForScatterSeries(xCell, yCell);
}
var trendline = series.TrendLines.Add(TrendlineType.Linear);
trendline.DisplayEquation = true;
trendline.Backward = 1;
presentation.Save("AutomaticIntercept.pptx", SaveFormat.Pptx);
trendline.Intercept = 100;
presentation.Save("FixedIntercept.pptx", SaveFormat.Pptx);
เมื่อคำนวณอัตโนมัติ ข้อมูลเหล่านี้ให้ y = 30x + 140 การตั้งค่าจุดตัดเป็น 100 แทนจะให้ค่าโดยประมาณ y = 43.33x + 100: ค่าที่ฟิตที่ศูนย์ตรงกับฐานที่ทราบ ส่วนเส้นจะไม่ผ่านทุกจุดข้อมูลอีกต่อไป
| จุดตัดอัตโนมัติ | จุดตัดคงที่ 100 |
|---|---|
![]() |
![]() |
ทั้งสองภาพใช้ข้อมูลและสเกลแกนเดียวกัน เส้นแนวโน้มถูกขยายกลับไปที่ X = 0 เพื่อแสดงจุดตัดของมัน
โดยค่าเริ่มต้นคุณสมบัตินี้มีค่า double.NaN ซึ่งหมายถึงจุดตัดที่ไม่ได้ระบุ ไม่ใช่ศูนย์ แล้วจุดตัดจะถูกคำนวณอัตโนมัติจากข้อมูล
เพิ่มเส้นกำหนดเอง
เส้นกำหนดเองคือรูปทรงที่วาดเหนือแผนภูมิแทนที่จะเป็นเส้นแนวโน้มที่คำนวณจากข้อมูลชุดข้อมูล ตัวอย่างนี้ใช้ IShapeCollection.AddAutoShape เพื่อเพิ่มเส้นแนวนอนลงบนสไลด์เหนือแผนภูมิ ตำแหน่งของเส้นระบุด้วยพิกัดสไลด์หน่วยจุด ดังนั้นเส้นเริ่มที่ขอบซ้ายของแผนภูมิและอยู่กึ่งกลางความสูงของแผนภูมิ ความกว้างตรงกับความกว้างของแผนภูมิ LineFormat ทำให้เส้นเป็นสีแดงทึบ
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Charts;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var slide = presentation.Slides[0];
var chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 100, 100, 500, 400);
var line = slide.Shapes.AddAutoShape(ShapeType.Line, chart.X, chart.Y + chart.Height / 2, chart.Width, 0);
line.LineFormat.FillFormat.FillType = FillType.Solid;
line.LineFormat.FillFormat.SolidFillColor.Color = Color.Red;
presentation.Save("AddCustomLines.pptx", SaveFormat.Pptx);
คำถามที่พบบ่อย
ค่า ‘forward’ และ ‘backward’ มีความหมายอย่างไรสำหรับเส้นแนวโน้ม?
เป็นความยาวของเส้นแนวโน้มที่ฉายไปข้างหน้า/ข้างหลัง: สำหรับแผนภูมิกระจาย (XY) – หน่วยตามแกน; สำหรับแผนภูมิที่ไม่ใช่กระจาย – จำนวนหมวดหมู่ Only ค่าที่ไม่เป็นลบเท่านั้นที่อนุญาต
เส้นแนวโน้มจะถูกรักษาไว้เมื่อส่งออกพรีเซนเทชันเป็น PDF หรือ SVG หรือเมื่อตีกราฟเป็นรูปภาพหรือไม่?
ใช่ Aspose.Slides แปลงพรีเซนเทชันเป็น PDF หรือ SVG และแปลงแผนภูมิเป็นรูปภาพ; เส้นแนวโน้มในฐานะแผนภูมิจะถูกคงไว้ในกระบวนการเหล่านี้ มีเมธอดเพิ่มเติมเพื่อ export an image of the chart โดยตรงด้วย

