การทำงานกับแผนภูมิ

การทำงานกับแผนภูมิ

ทำงานกับแผนภูมิ

Aspose.Words FOSS สำหรับ .NET สามารถแทรกแผนภูมิ Word แบบดั้งเดิม — แผนภูมิ DrawingML เดียวกับที่ Word สร้างเอง — เป็นรูปร่างในเลเยอร์การวาด. DocumentBuilder.InsertChart สร้างรูปร่างและคืนค่า; คุณสมบัติ Chart ของรูปร่างเปิดเผยซีรีส์, แกน, คำอธิบาย, และการจัดรูปแบบ. คู่มือนี้ครอบคลุมการสร้างแผนภูมิ, การเลือกประเภทแผนภูมิ, การทำงานกับซีรีส์และจุดข้อมูล, แกนและเส้นกริด, และการจัดรูปแบบองค์ประกอบของแผนภูมิ.


การสร้างแผนภูมิ

เรียก DocumentBuilder.InsertChart(chartType, width, height) เพื่อแทรกรูปร่างแผนภูมิที่ตำแหน่งเคอร์เซอร์และรับ Shape ที่บรรจุอยู่กลับมา. คุณสมบัติ Chart ของมันคืออ็อบเจ็กต์ Chart ที่คุณกำหนดค่า. แผนภูมิที่เพิ่งแทรกมามีซีรีส์ตัวอย่างแบบ placeholder, ดังนั้นให้ลบ Chart.Series ก่อนเพิ่มข้อมูลจริงด้วย ChartSeriesCollection.Add(seriesName, categories, values):

using Aspose.Words;
using Aspose.Words.Drawing.Charts;

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;

// Delete default generated series.
chart.Series.Clear();

string[] categories = new string[] { "AW Category 1", "AW Category 2", "AW Category 3" };
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });

doc.Save("chart.docx");

ตัวอย่างนี้สร้าง Document, ใช้ DocumentBuilder.InsertChart(ChartType.Line, 432, 252) เพื่อแทรกรูปร่างแผนภูมิเส้น, อ่าน shape.Chart เพื่อรับอ็อบเจ็กต์ Chart, เรียก chart.Series.Clear() เพื่อลบซีรีส์ placeholder, เพิ่มซีรีส์จริงหนึ่งรายการด้วย chart.Series.Add(seriesName, categories, values), และเขียนผลลัพธ์ด้วย Document.Save.


ประเภทแผนภูมิ

ChartType ครอบคลุมตระกูลแผนภูมิมาตรฐานของ Word — Line, Bar, Column (รวมถึงรูปแบบ Stacked, PercentStacked, และ 3D), Pie, PieOfPie, Doughnut, Area, Scatter, Bubble, Radar, Stock, Surface, และประเภทแผนภูมิใหม่ของ Word 2016 Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, และ Waterfall. ส่งค่าที่ต้องการเป็นอาร์กิวเมนต์ chartType ให้กับ InsertChart; ไม่มีวิธีใดที่จะเปลี่ยนประเภทของแผนภูมิที่มีอยู่หลังจากแทรกแล้วนอกจากการแทนที่รูปร่าง.


ซีรีส์และจุดข้อมูล

Chart.Series เป็น ChartSeriesCollection ของวัตถุ ChartSeries . นอกเหนือจากการ overload Add(seriesName, categories, values) ที่ใช้ข้างต้น, ChartSeriesCollection ยังมี overload สำหรับคู่ค่า X/Y, วันที่, และขนาดบับเบิล, รวมถึง Insert, Remove(index), และ Clear(). แต่ละ ChartSeries เปิดเผย DataPoints (ซึ่งเป็น ChartDataPointCollection) สำหรับการจัดรูปแบบต่อจุด — Format, Marker, Explosion, และ InvertIfNegative — และ HasDataLabels / DataLabels เพื่อเปิดและกำหนดค่า ChartDataLabelCollection (ShowValue, ShowCategoryName, ShowPercentage, Position).


แกนและเส้นกริด

Chart.AxisX, AxisY, และ AxisZ เป็นวัตถุ ChartAxis (โดยมี Chart.Axes เป็น ChartAxisCollection สำหรับการวนซ้ำทั้งหมด). แต่ละแกนมี HasMajorGridlines / HasMinorGridlines, MajorUnit / MinorUnit (พร้อมกับแฟล็ก *IsAuto ที่ตรงกัน), Crosses / CrossesAt, CategoryType, และวัตถุ TickLabels (AxisTickLabels) สำหรับแบบอักษรและการวางแนวของป้ายกำกับ. ChartAxis.Title (ChartAxisTitle) ตั้งค่าข้อความคำบรรยายแกนผ่านคุณสมบัติ Text และ Show ของมัน.


คำอธิบาย, ชื่อเรื่อง, และตารางข้อมูล

Chart.Title (ChartTitle) กำหนดคำบรรยายโดยรวมของแผนภูมิ — Text, Show, และ Font. Chart.Legend (ChartLegend) ควบคุมว่าคำอธิบายจะแสดงหรือไม่และจะแสดงที่ใดผ่าน Position (ค่าประเภท LegendPosition เช่น Bottom, Right, หรือ Top) และเปิดเผย LegendEntries รายบุคคล. Chart.DataTable (ChartDataTable) สามารถแสดงค่าซีรีส์พื้นฐานเป็นตารางใต้พื้นที่พล็อต, พร้อมกับ Show, HasLegendKeys, และสวิตช์เส้นขอบ.


การจัดรูปแบบองค์ประกอบของแผนภูมิ

ส่วนใหญ่ขององค์ประกอบแผนภูมิ — ซีรีส์, จุดข้อมูล, แกน, ชื่อเรื่อง, และคำอธิบาย — เปิดเผยคุณสมบัติ Format ชนิด ChartFormat, ซึ่งต่อมาจะเปิดเผย Fill และ Stroke สำหรับสีขององค์ประกอบนั้น, พร้อมกับ ShapeType (ChartShapeType) สำหรับรูปร่างของมาร์คเกอร์จุดข้อมูล. ChartFormat.SetDefaultFill() รีเซ็ตองค์ประกอบกลับไปยังรูปลักษณ์เริ่มต้นที่กำหนดโดยธีม.


เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด

  • ควรลบหรือเปลี่ยนชุดข้อมูลตัวแทน (chart.Series.Clear()) ก่อนเพิ่มข้อมูลจริงเสมอ — แผนภูมิที่แทรกใหม่มาพร้อมกับข้อมูลตัวอย่างอยู่แล้ว.
  • ใช้การโอเวอร์โหลด ChartSeriesCollection.Add ที่ตรงกับรูปแบบข้อมูลของคุณ (ประเภท, คู่ X/Y, วันที่ หรือขนาดบับเบิล) แทนการบังคับให้ทุกอย่างผ่านคู่ประเภท/ค่า.
  • กำหนด HasDataLabels = true ให้กับชุดข้อมูลก่อนกำหนดค่าคอลเลกชัน DataLabels — คุณสมบัติการแสดงผลของคอลเลกชันจะไม่มีผลปรากฏเมื่อปิดการแสดงป้ายชื่อ.
  • อ่าน Chart.ChartSpace หรือตรวจสอบ ChartType เฉพาะก่อนพึ่งพาพฤติกรรมเส้นตารางหรือแกนที่แตกต่างระหว่างแผนภูมิแบบคลาสสิกและสไตล์ Word-2016.
  • ควรใช้ ChartFormat.SetDefaultFill() แทนการลบคุณสมบัติการเติมทุกอย่างด้วยตนเองเมื่อคุณต้องการรีเซ็ตลักษณะขององค์ประกอบ.

ปัญหาทั่วไป

ปัญหาสาเหตุวิธีแก้ไข
แผนภูมิใหม่แสดงข้อมูลสาธิตที่ไม่คาดคิดInsertChart เติมแผนภูมิด้วยชุดข้อมูลตัวยึดเรียก chart.Series.Clear() ก่อนเพิ่มชุดข้อมูลของคุณเอง
ป้ายกำกับข้อมูลไม่แสดงHasDataLabels ไม่ได้ตั้งค่าบนชุดข้อมูลก่อนกำหนดค่า DataLabelsตั้งค่า series.HasDataLabels = true จากนั้นกำหนดค่า ShowValue/ShowCategoryName บน series.DataLabels
เส้นกริดไม่แสดงบนแกนค่าHasMajorGridlines/HasMinorGridlines มีค่าเริ่มต้นเป็น false สำหรับแกนนั้นตั้งค่า chart.AxisY.HasMajorGridlines = true (และ HasMinorGridlines หากจำเป็น)
Legend ไม่ปรากฏChart.Legend.Position ถูกตั้งค่าเป็น LegendPosition.Noneตั้งค่า Position เป็น Bottom, Right, Top, Left หรือ TopRight

FAQ

ฉันจะใส่แผนภูมิลงในเอกสารได้อย่างไร?

เรียก DocumentBuilder.InsertChart(chartType, width, height). มันจะคืนค่า Shape ที่บรรจุอยู่; อ่านคุณสมบัติ Chart ของมันเพื่อกำหนดค่าแผนภูมิ.

ฉันจะเพิ่มข้อมูลลงในแผนภูมิได้อย่างไร?

ล้างชุดข้อมูลตัวแทนด้วย chart.Series.Clear(), จากนั้นเรียก chart.Series.Add(seriesName, categories, values) (หรือหนึ่งใน Add overload อื่นสำหรับข้อมูล X/Y, วันที่, หรือข้อมูลบับเบิล).

มีประเภทแผนภูมิใดบ้างที่พร้อมใช้งาน?

ChartType มีชุดคลาสสิก (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, รวมถึงเวอร์ชัน stacked และ 3D) และประเภทแผนภูมิของ Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).

ฉันจะเปลี่ยนตำแหน่งที่ legend ปรากฏได้อย่างไร?

ตั้งค่า Chart.Legend.Position เป็นค่า LegendPosition, เช่น LegendPosition.Bottom หรือ LegendPosition.Right.

ฉันสามารถจัดรูปแบบจุดข้อมูลแต่ละจุดให้แตกต่างจากส่วนที่เหลือของซีรีส์ได้หรือไม่?

ใช่ — เข้าถึง ChartSeries.DataPoints (เป็น ChartDataPointCollection) แล้วตั้งค่า Format, Marker หรือ Explosion ของ ChartDataPoint อย่างอิสระจากการจัดรูปแบบระดับซีรีส์.


API Reference สรุป

คลาส/เมธอดคำอธิบาย
DocumentBuilder.InsertChartแทรกรูปร่างแผนภูมิที่ตำแหน่งเคอร์เซอร์และคืนค่ามันกลับมา.
Chartอ็อบเจ็กต์การกำหนดค่าของแผนภูมิที่เข้าถึงได้ผ่าน Shape.Chart.
ChartTypeรายการ enum ของประเภทแผนภูมิที่มีอยู่ (line, bar, pie, และประเภทแผนภูมิของ Word-2016).
ChartSeriesCollection / ChartSeriesชุดข้อมูลของแผนภูมิและเมธอดสำหรับเพิ่ม, แทรก หรือลบมัน.
ChartDataPointCollection / ChartDataPointการจัดรูปแบบแต่ละจุดภายในชุดข้อมูล.
ChartDataLabelCollection / ChartDataLabelป้ายค่า/หมวดหมู่ที่แสดงบนจุดของแผนภูมิ.
ChartAxis / ChartAxisCollectionการกำหนดค่ามิติ — เส้นกริด, หน่วย, จุดตัด, ป้ายระดับ.
ChartLegend / LegendPositionการแสดงและตำแหน่งของ Legend.
ChartTitleคำอธิบายโดยรวมของแผนภูมิ.
ChartDataTableตารางค่าชุดข้อมูลทางเลือกที่แสดงอยู่ใต้พื้นที่กราฟ.
ChartFormatการจัดรูปแบบการเติม, เส้นขอบ, และรูปร่างที่ใช้ร่วมกันโดยส่วนใหญ่ขององค์ประกอบแผนภูมิ.

ดูเพิ่มเติม

 ภาษาไทย