کار با نمودارها
کار با نمودارها
Aspose.Words FOSS برای .NET میتواند نمودارهای بومی ورد را — همان نمودارهای DrawingML که ورد خودش ایجاد میکند — بهعنوان یک شکل در لایه رسم وارد کند. DocumentBuilder.InsertChart شکل را ایجاد میکند و برمیگرداند؛ ویژگی Chart شکل، سریها، محورها، افسانه و قالببندی را در دسترس میگذارد. این راهنما شامل ایجاد یک نمودار، انتخاب نوع نمودار، کار با سریها و نقاط داده، محورها و خطوط شبکه، و قالببندی عناصر نمودار است.
ایجاد یک نمودار
برای درج یک شکل نمودار در مکاننما DocumentBuilder.InsertChart(chartType, width, height) را فراخوانی کنید و Shape حاوی آن را دریافت کنید. ویژگی Chart آن، شیء Chart است که شما پیکربندی میکنید. یک نمودار تازه وارد شده با سریهای نمایشی جایدار میآید، بنابراین قبل از افزودن دادههای واقعی با ChartSeriesCollection.Add(seriesName, categories, values)، Chart.Series را پاک کنید:
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() را فراخوانی میکند تا سری جایدار را حذف کند، یک سری واقعی را با chart.Series.Add(seriesName, categories, values) اضافه میکند، و نتیجه را با Document.Save مینویسد.
انواع نمودار
ChartType شامل خانوادههای استاندارد نمودارهای ورد — 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، تاریخها یا اندازههای حباب) را مطابق داشته باشند بهجای اینکه همه چیز را بهصورت جفت دسته/مقدار تحمیل کنید. - قبل از پیکربندی مجموعه
DataLabels،HasDataLabels = trueرا روی یک سری تنظیم کنید — ویژگیهای نمایش مجموعه زمانی که برچسبها خاموش هستند، تأثیر قابل مشاهدهای ندارند. - قبل از اعتماد به رفتار خطوط شبکه یا محور که بین نمودارهای کلاسیک و سبک Word-2016 متفاوت است،
Chart.ChartSpaceرا مطالعه کنید یاChartTypeمخصوص را بررسی کنید. - به جای پاکسازی دستی هر ویژگی پر (fill) وقتی میخواهید ظاهر یک عنصر را بازنشانی کنید، از
ChartFormat.SetDefaultFill()استفاده کنید.
مسائل رایج
| مشکل | دلیل | راهحل |
|---|---|---|
| نمودار جدید دادههای نمایشی غیرمنتظره را نشان میدهد | InsertChart نمودار را با سریهای جایگزین پر میکند | قبل از افزودن سریهای خود، chart.Series.Clear() را فراخوانی کنید |
| برچسبهای داده ظاهر نمیشوند | HasDataLabels بر روی سری قبل از پیکربندی DataLabels تنظیم نشده بود | series.HasDataLabels = true را تنظیم کنید، سپس ShowValue/ShowCategoryName را بر روی series.DataLabels پیکربندی کنید |
| خطوط شبکه در محور مقدار نمایش داده نمیشوند | HasMajorGridlines/HasMinorGridlines بهصورت پیشفرض برای آن محور false هستند | تنظیم chart.AxisY.HasMajorGridlines = true (و HasMinorGridlines در صورت نیاز) |
| راهنما ظاهر نمیشود | 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 برای دادههای X/Y، تاریخ یا حبابی).
کدام انواع نمودار در دسترس هستند؟
ChartType شامل خانوادههای کلاسیک (Line، Bar، Column، Pie، Area، Scatter، Bubble، Radar، Stock، Surface، بهعلاوهٔ نسخههای پشتهای و سهبعدی آنها) و انواع نمودار Word 2016 (Treemap، Sunburst، Histogram، Pareto، BoxAndWhisker، Waterfall) است.
چگونه مکان نمایش legend را تغییر دهم؟
Chart.Legend.Position را به مقدار LegendPosition تنظیم کنید، مانند LegendPosition.Bottom یا LegendPosition.Right.
آیا میتوانم یک نقطه دادهٔ فردی را متفاوت از بقیهٔ سری آن قالببندی کنم؟
بله — به ChartSeries.DataPoints (یک ChartDataPointCollection) مراجعه کنید و ChartDataPoint آن را بهصورت مستقل از قالببندی سطح سری، Format، Marker یا Explosion تنظیم کنید.
API Reference خلاصه
| کلاس/متد | توضیح |
|---|---|
DocumentBuilder.InsertChart | یک شکل نمودار را در مکاننما درج میکند و آن را برمیگرداند. |
Chart | شیء پیکربندی نمودار که از طریق Shape.Chart قابل دسترسی است. |
ChartType | Enum انواع نمودارهای موجود (خط، میله، پای و انواع نمودارهای Word-2016). |
ChartSeriesCollection / ChartSeries | سریهای دادهای نمودار و روشهای افزودن، درج یا حذف آنها. |
ChartDataPointCollection / ChartDataPoint | قالببندی تکنقطهای درون یک سری. |
ChartDataLabelCollection / ChartDataLabel | برچسبهای مقدار/دسته که روی نقاط نمودار نمایش داده میشوند. |
ChartAxis / ChartAxisCollection | پیکربندی محور — خطوط شبکه، واحدها، نقطه تقاطع، برچسبهای تیک. |
ChartLegend / LegendPosition | قابلیت نمایش راهنما و مکان آن. |
ChartTitle | عنوان کلی نمودار. |
ChartDataTable | جدول اختیاری مقادیر سری که زیر ناحیه نمودار نمایش داده میشود. |
ChartFormat | قالببندی پر، خطکشی و شکل که توسط اکثر عناصر نمودار بهاشتراک گذاشته میشود. |