วิธีทำงานกับแผนภูมิใน .NET
คู่มือนี้แสดงวิธีการแทรกแผนภูมิ Word แบบดั้งเดิมและควบคุมลักษณะของมันด้วย Aspose.Words FOSS สำหรับ .NET — การซ่อนคำอธิบายและแกน, การกำหนดสเกลของแกนค่าคงที่, จากนั้นเลือกประเภทแผนภูมิอื่นและจัดรูปแบบป้ายข้อมูลและจุดแต่ละจุด. Aspose.Words FOSS สำหรับ .NET มีให้ผ่าน NuGet หรือโดยการสร้างจากซอร์ส.
คู่มือขั้นตอนต่อขั้นตอน
ขั้นตอนที่ 1: รับไลบรารี
คัดลอกรีโพซิทอรีและสร้าง Aspose.Words.sln ในโหมด Release configuration จากนั้นเพิ่มการอ้างอิงโปรเจกต์ไปยัง Aspose.Words.csproj จากโปรเจกต์ .NET ของคุณเอง ตามที่อธิบายใน คู่มือการติดตั้ง.
ขั้นตอนที่ 2: แทรกแผนภูมิและทำให้ลักษณะของมันง่ายขึ้น
DocumentBuilder.InsertChart(chartType, width, height) แทรกรูปแผนภูมิที่ตำแหน่งเคอร์เซอร์และคืนค่า Shape ที่บรรจุ; คุณสมบัติ Chart ของมันคืออ็อบเจ็กต์ Chart ที่คุณกำหนดค่า, โดยมี AxisX, AxisY, Legend และ Title เป็นซับอ็อบเจ็กต์หลักของมัน. ประเภทการสร้างแผนภูมิอยู่ในเนมสเปซ Aspose.Words.Drawing.Charts ควบคู่กับเนมสเปซหลัก Aspose.Words. แผนภูมิ ChartType.Bar ขนาดเล็กพร้อมการนำเสนอบน Document ใหม่มักหมายถึงการตั้งค่า Legend.Position เป็น LegendPosition.None, การตั้งค่า Hidden และ HasMajorGridlines บน AxisY และ AxisX, การตั้งค่า Title.Show เป็น false, การล้าง ChartSeriesCollection ของ placeholder ด้วย Series.Clear() ก่อนเรียก Series.Add(seriesName, categories, values), การตรึง AxisY.Scaling.Maximum ไปยัง AxisBound คงที่แทนการให้มันสเกลอัตโนมัติ, จากนั้นเขียนผลลัพธ์ด้วย Document.Save. ตัวอย่างเต็ม — Document, DocumentBuilder, Chart, AxisX, AxisY, Legend, Title, ChartSeriesCollection, AxisBound, และ Document.Save — มีลักษณะดังนี้:
using Aspose.Words;
using Aspose.Words.Drawing.Charts;
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.InsertChart(ChartType.Bar, 432, 252);
Chart chart = shape.Chart;
chart.Legend.Position = LegendPosition.None;
ChartSeriesCollection seriesColl = chart.Series;
chart.AxisY.Hidden = true;
chart.AxisY.HasMajorGridlines = false;
chart.AxisX.Hidden = true;
chart.Title.Show = false;
seriesColl.Clear();
chart.AxisY.Scaling.Maximum = new AxisBound(100);
string[] categories = new string[] { "AW Category 1" };
seriesColl.Add("AW Series 1", categories, new double[] { 30 });
doc.Save("chart.docx");สิ่งนี้สร้าง Document, แทรกแผนภูมิ ChartType.Bar, ตั้งค่า Chart.Legend.Position เป็น LegendPosition.None เพื่อซ่อนคำอธิบาย, ตั้งค่า Hidden = true และ HasMajorGridlines = false บน chart.AxisY และ Hidden = true บน chart.AxisX, ตั้งค่า chart.Title.Show = false, ล้างชุดข้อมูล placeholder ด้วย seriesColl.Clear(), กำหนดแกนค่าที่เป็นค่าสูงสุด 100 ผ่าน chart.AxisY.Scaling.Maximum = new AxisBound(100), เพิ่มชุดข้อมูลจริงหนึ่งชุดด้วย seriesColl.Add(seriesName, categories, values), และเขียนผลลัพธ์ด้วย Document.Save.
ขั้นตอนที่ 3: เลือกประเภทแผนภูมิที่แตกต่าง
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 — ไม่มีสมาชิกที่เปลี่ยนประเภทของแผนภูมิที่มีอยู่หลังจากแทรกแล้ว, ดังนั้นให้เลือกประเภทที่ถูกต้องตั้งแต่แรกหรือแทนที่รูปร่าง.
ขั้นตอนที่ 4: เพิ่มและจัดรูปแบบป้ายข้อมูล
ตั้งค่า series.HasDataLabels = true ก่อนกำหนดค่า series.DataLabels (ซึ่งเป็น ChartDataLabelCollection) — การสลับการแสดงผลของมันไม่มีผลต่อการมองเห็นในขณะที่ป้ายปิดอยู่. ShowValue, ShowCategoryName, และ ShowPercentage ควบคุมว่าข้อมูลส่วนใดบ้างที่จะแสดง, และ Position วางตำแหน่งเหล่านั้นสัมพันธ์กับจุดข้อมูล.
ขั้นตอนที่ 5: จัดรูปแบบจุดข้อมูลแต่ละจุด
ทำการเข้าถึง DataPoints ของชุดข้อมูล (ซึ่งเป็น ChartDataPointCollection) เพื่อไปยัง ChartDataPoint หนึ่งรายการและตั้งค่า Format, Marker, Explosion, หรือ InvertIfNegative อย่างอิสระจากส่วนอื่นของชุดข้อมูล. วิธีนี้ช่วยให้คุณเน้นบาร์, ส่วน, หรือมาร์คเกอร์เดียวโดยไม่ต้องเปลี่ยนสไตล์ของชุดข้อมูลทั้งหมด.
ปัญหาทั่วไปและวิธีแก้ไข
แผนภูมิใหม่แสดงข้อมูลสาธิตที่ไม่คาดคิด. InsertChart ใส่ซีรีส์ตัวอย่างในแผนภูมิ. เรียก chart.Series.Clear() ก่อนเพิ่มซีรีส์ของคุณเอง.
Hiding AxisY ไม่ลบเส้นกริด. Hidden ซ่อนเส้นแกนและป้ายกำกับ; เส้นกริดเป็นสวิตช์แยกต่างหาก ตั้งค่า HasMajorGridlines = false (และ HasMinorGridlines = false (หากเส้นกริดย่อยก็แสดงด้วย).
ป้ายข้อมูลไม่ปรากฏหลังจากตั้งค่า ShowValue = true. HasDataLabels ไม่ได้ตั้งค่าที่ซีรีส์ก่อน. ตั้งค่า series.HasDataLabels = true, แล้วกำหนดค่า series.DataLabels.
Scaling.Maximum ดูเหมือนว่าจะไม่ทำงาน. ยืนยันว่าคุณกำลังตั้งค่าในอ็อบเจ็กต์แกนที่ถูกต้อง (chart.AxisY สำหรับแกนค่าที่ส่วนใหญ่ของประเภทแผนภูมิ) และไม่มีเส้นทางโค้ดก่อนหน้าที่ทำการรีเซ็ต Scaling กลับไปเป็นค่าเริ่มต้น AxisBound().
คำถามที่พบบ่อย
ฉันจะซ่อนคำอธิบายของแผนภูมิได้อย่างไร?
ตั้งค่า chart.Legend.Position = LegendPosition.None.
ทำอย่างไรจึงจะกำหนดแกนให้มีช่วงเฉพาะแทนการปรับอัตโนมัติ?
ตั้งค่า AxisScaling.Minimum และ/หรือ AxisScaling.Maximum (ค่าทั้งสองเป็นค่า AxisBound) บน chart.AxisX.Scaling หรือ chart.AxisY.Scaling.
ทำอย่างไรจึงจะซ่อนชื่อแผนภูมิโดยไม่ลบออก?
ตั้งค่า chart.Title.Show = false. วัตถุ ChartTitle และ Text ของมันยังคงอยู่; มีเพียงคำบรรยายที่มองเห็นถูกซ่อนไว้เท่านั้น.
มีประเภทแผนภูมิใดบ้างที่พร้อมใช้งาน?
ChartType แสดงรายการกลุ่มคลาสสิก (Line, Bar, Column, Pie, Area, Scatter, Bubble, Radar, Stock, Surface, รวมถึงรูปแบบ stacked และ 3D) ควบคู่กับประเภทของ Word 2016 (Treemap, Sunburst, Histogram, Pareto, BoxAndWhisker, Waterfall).
ฉันสามารถจัดรูปแบบจุดข้อมูลหนึ่งให้แตกต่างจากจุดข้อมูลอื่นในซีรีส์เดียวกันได้หรือไม่?
ได้ — เข้าถึงดัชนีใน ChartSeries.DataPoints แล้วตั้งค่า Format, Marker หรือ Explosion ของ ChartDataPoint นั้นแยกกันได้.