เพิ่มเส้นแนวโน้มลงในแผนภูมือนำเสนอด้วย Python
ภาพรวม
บทความนี้อธิบายวิธีการเพิ่มเส้นแนวโน้มลงในแผนภูมิการนำเสนอโดยใช้ Aspose.Slides แสดงวิธีสร้างแผนภูมิ, เพิ่มเส้นแนวโน้มให้กับชุดข้อมูลในแผนภูมิ, และทำงานกับประเภทเส้นแนวโน้มหลายประเภท ได้แก่ เอ็กซโปเนนเชียล, ลิเนียร์, ลอการิทึม, ค่าเฉลี่ยเคลื่อนที่, โพลิโนเมียล, และพาวเวอร์
นอกจากนี้ยังอธิบายวิธีการเพิ่มเส้นที่กำหนดเองลงในแผนภูมิโดยการแทรกรูปร่างเส้น, พร้อมส่วน FAQ สั้น ๆ เกี่ยวกับค่าโปรเจกชันของเส้นแนวโน้มแบบ forward และ backward และว่าการส่งออกเป็น PDF หรือ SVG หรือการเรนเดอร์แผนภูมิเป็นภาพจะคงรักษาเส้นแนวโน้มไว้หรือไม่
เพิ่มเส้นแนวโน้ม
ใช้ TrendlineCollection.add เพื่อเพิ่มเส้นแนวโน้มให้กับชุดข้อมูลของแผนภูมิ โดยเลือกประเภทด้วย TrendlineType. ตัวอย่างสร้างแผนภูมิคอลัมน์แบบคลัสเตอร์พร้อมข้อมูลเริ่มต้นและเพิ่มเส้นแนวโน้มสองเส้นให้กับแต่ละหนึ่งในสามชุดข้อมูล
เส้นแนวโน้มเอ็กซโปเนนเชียลซ่อนสมการและค่า R‑squared ผ่าน display_equation และ display_r_squared_value, ส่วนเส้นแนวโน้มลิเนียร์มีสีแดง เส้นแนวโน้มลอการิทึมใช้ add_text_frame_for_overriding เพื่อกำหนดป้ายกำกับแบบกำหนดเอง ค่าเฉลี่ยเคลื่อนที่ใช้ period จำนวนสามจุดข้อมูลและ trendline_name แบบกำหนดเอง
เส้นแนวโน้มโพลิโนเมียลมี order เป็นสามและขยายหนึ่งหมวดหมู่ไปข้างหน้าผ่าน forward. เส้นแนวโน้มพาวเวอร์ขยายหนึ่งหมวดหมู่ไปข้างหลังผ่าน backward.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 400)
first_series = chart.chart_data.series[0]
exponential_trendline = first_series.trend_lines.add(charts.TrendlineType.EXPONENTIAL)
exponential_trendline.display_equation = False
exponential_trendline.display_r_squared_value = False
linear_trendline = first_series.trend_lines.add(charts.TrendlineType.LINEAR)
linear_trendline.format.line.fill_format.fill_type = slides.FillType.SOLID
linear_trendline.format.line.fill_format.solid_fill_color.r = 255
linear_trendline.format.line.fill_format.solid_fill_color.g = 0
linear_trendline.format.line.fill_format.solid_fill_color.b = 0
second_series = chart.chart_data.series[1]
logarithmic_trendline = second_series.trend_lines.add(charts.TrendlineType.LOGARITHMIC)
logarithmic_trendline.add_text_frame_for_overriding("New log trend line")
moving_average_trendline = second_series.trend_lines.add(charts.TrendlineType.MOVING_AVERAGE)
moving_average_trendline.period = 3
moving_average_trendline.trendline_name = "New TrendLine Name"
third_series = chart.chart_data.series[2]
polynomial_trendline = third_series.trend_lines.add(charts.TrendlineType.POLYNOMIAL)
polynomial_trendline.forward = 1
polynomial_trendline.order = 3
power_trendline = third_series.trend_lines.add(charts.TrendlineType.POWER)
power_trendline.backward = 1
presentation.save("ChartTrendLines.pptx", slides.export.SaveFormat.PPTX)
กำหนดค่าจุดตัดของเส้นแนวโน้ม
ใช้ intercept เพื่อกำหนดค่าของ Y ที่ X = 0 เส้นแนวโน้ม การตั้งค่านี้รองรับเส้นแนวโน้มลิเนียร์, เอ็กซโปเนนเชียล, และโพลิโนเมียล
ตัวอย่างเช่น โมเดลต้นทุนการผลิตอาจต้องเริ่มจากค่าใช้จ่ายคงที่ที่ทราบคือ 100 แม้ว่าการวัดที่ปริมาณการผลิตไม่เป็นศูนย์จะบ่งบอกฐานพื้นฐานที่ต่างออกไป สำหรับเส้นแนวโน้มลิเนียร์ การกำหนดจุดตัดทำให้สมการ y = ax + b มี b = 100; ความชันจะถูกฟิตตามข้อมูลภายใต้เงื่อนไขนั้น ไม่ได้เพียงแค่ย้ายเส้นที่ฟิตไว้แล้ว การตั้งค่าการตัดแกนจะกำหนดตำแหน่งที่แกนของแผนภูมิเข้ากัน, ไม่ได้แก้ค่า系数ของเส้นแนวโน้มที่ฟิตแล้ว
ตัวอย่างต่อไปนี้สร้างแผนภูมิกระจายใน (XY) โดยมีปริมาณการผลิตตั้งแต่ 1 ถึง 4 และต้นทุน 170, 200, 230, และ 260 บันทึกแผนภูมิด้วยจุดตัดอัตโนมัติเริ่มต้น, ตั้งค่าจุดตัดเป็น 100, แล้วบันทึกเป็น PPTX ตัวที่สอง ไฟล์สองไฟล์แตกต่างกันเฉพาะที่การตั้งค่าจุดตัด เส้นแนวโน้มแสดงสมการและขยายกลับไปที่ X = 0
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.SCATTER_WITH_MARKERS, 20, 20, 480, 210)
chart.has_legend = False
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
name_cell = workbook.get_cell(0, 0, 1, "Production cost")
series = chart.chart_data.series.add(name_cell, charts.ChartType.SCATTER_WITH_MARKERS)
costs = [170, 200, 230, 260]
for i, cost in enumerate(costs):
x_cell = workbook.get_cell(0, i + 1, 0, i + 1)
y_cell = workbook.get_cell(0, i + 1, 1, cost)
series.data_points.add_data_point_for_scatter_series(x_cell, y_cell)
trendline = series.trend_lines.add(charts.TrendlineType.LINEAR)
trendline.display_equation = True
trendline.backward = 1
presentation.save("AutomaticIntercept.pptx", slides.export.SaveFormat.PPTX)
trendline.intercept = 100
presentation.save("FixedIntercept.pptx", slides.export.SaveFormat.PPTX)
ด้วยการคำนวณอัตโนมัติ ข้อมูลเหล่านี้ให้ผลลัพธ์ y = 30x + 140 การตั้งค่าจุดตัดเป็น 100 แทนจะให้ผลประมาณ y = 43.33x + 100: ค่าที่ฟิตที่ศูนย์ตรงกับฐานระดับที่ทราบ, ในขณะที่เส้นจะไม่ผ่านทุกจุดข้อมูลอีกต่อไป
| จุดตัดอัตโนมัติ | จุดตัดคงที่ 100 |
|---|---|
![]() |
![]() |
ทั้งสองภาพใช้ข้อมูลและสเกลแกนเดียวกัน เส้นแนวโน้มถูกขยายกลับไปที่ X = 0 เพื่อแสดงจุดตัดของมัน
โดยค่าเริ่มต้น คุณสมบัติมีค่า float("nan") ซึ่งหมายถึงจุดตัดที่ไม่ได้ระบุ ไม่ใช่ศูนย์ แล้วจุดตัดจะถูกคำนวณอัตโนมัติจากข้อมูล
เพิ่มเส้นที่กำหนดเอง
เส้นที่กำหนดเองคือรูปทรงที่วาดเหนือแผนภูมิ แทนที่จะเป็นเส้นแนวโน้มที่คำนวณจากข้อมูลชุด การทำตัวอย่างนี้ใช้ ShapeCollection.add_auto_shape เพื่อเพิ่มเส้นแนวนอนลงบนสไลด์เหนือแผนภูมิ ตำแหน่งของเส้นระบุด้วยพิกัดสไลด์หน่วยพอยท์ ดังนั้นมันเริ่มที่ขอบซ้ายของแผนภูมิและอยู่กึ่งกลางสูงของแผนภูมิ ความกว้างตรงกับความกว้างของแผนภูมิ line_format ทำให้เส้นเป็นสีแดงทึบ
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 100, 100, 500, 400)
line = slide.shapes.add_auto_shape(slides.ShapeType.LINE, chart.x, chart.y + chart.height / 2, chart.width, 0)
line.line_format.fill_format.fill_type = slides.FillType.SOLID
line.line_format.fill_format.solid_fill_color.r = 255
line.line_format.fill_format.solid_fill_color.g = 0
line.line_format.fill_format.solid_fill_color.b = 0
presentation.save("AddCustomLines.pptx", slides.export.SaveFormat.PPTX)
FAQ
‘forward’ และ ‘backward’ มีความหมายอย่างไรสำหรับเส้นแนวโน้ม?
พวกมันคือความยาวของเส้นแนวโน้มที่ถูกโปรเจกต์ไปข้างหน้า/ข้างหลัง: สำหรับแผนภูมิกระจาย (XY) — ในหน่วยแกน; สำหรับแผนภูมิที่ไม่ใช่กระจาย — ในจำนวนหมวดหมู่ ค่าใด ๆ ที่เป็นลบไม่ได้รับอนุญาต
เส้นแนวโน้มจะคงอยู่เมื่อส่งออกการนำเสนอเป็น PDF หรือ SVG หรือเมื่อเรนเดอร์สไลด์เป็นภาพหรือไม่?
ใช่ Aspose.Slides จะเปลี่ยนการนำเสนอเป็น PDF หรือ SVG และเรนเดอร์แผนภูมิเป็นภาพ; เส้นแนวโน้มในฐานะส่วนหนึ่งของแผนภูมิจึงถูกคงไว้ในกระบวนการเหล่านั้น อีกวิธีหนึ่งยังมีให้เพื่อ export an image of the chart เอง.

