کار با نمودارها

کار با نمودارها

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 قابل دسترسی است.
ChartTypeEnum انواع نمودارهای موجود (خط، میله، پای و انواع نمودارهای Word-2016).
ChartSeriesCollection / ChartSeriesسری‌های داده‌ای نمودار و روش‌های افزودن، درج یا حذف آن‌ها.
ChartDataPointCollection / ChartDataPointقالب‌بندی تک‌نقطه‌ای درون یک سری.
ChartDataLabelCollection / ChartDataLabelبرچسب‌های مقدار/دسته که روی نقاط نمودار نمایش داده می‌شوند.
ChartAxis / ChartAxisCollectionپیکربندی محور — خطوط شبکه، واحدها، نقطه تقاطع، برچسب‌های تیک.
ChartLegend / LegendPositionقابلیت نمایش راهنما و مکان آن.
ChartTitleعنوان کلی نمودار.
ChartDataTableجدول اختیاری مقادیر سری که زیر ناحیه نمودار نمایش داده می‌شود.
ChartFormatقالب‌بندی پر، خط‌کشی و شکل که توسط اکثر عناصر نمودار به‌اشتراک گذاشته می‌شود.

همچنین ببینید:

 فارسی