نحوه کار با نمودارها در .NET
این راهنما نشان میدهد چگونه یک نمودار بومی Word را وارد کرده و ظاهر آن را با Aspose.Words FOSS برای .NET کنترل کنیم — مخفیکردن افسانه و محورها، ثابتکردن مقیاس محور مقدار، سپس انتخاب نوع نمودار متفاوت و قالببندی برچسبهای داده و نقاط جداگانه. Aspose.Words FOSS برای .NET از طریق NuGet یا با ساخت از منبع در دسترس است.
راهنمای گامبهگام
مرحله ۱: دریافت کتابخانه
مخزن را کلون کنید و بسازید Aspose.Words.sln در پیکربندی Release، سپس یک ارجاع پروژه به Aspose.Words.csproj از پروژه .NET خودتان، همانطور که در راهنمای نصب.
مرحله ۲: وارد کردن یک نمودار و سادهسازی ظاهر آن
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 جایدار با 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 را تنظیم میکند، سری جایگزین را با 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().
سوالات متداول
چگونه legend نمودار را مخفی کنم؟
تنظیم 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، بهعلاوهٔ انواع انباشته و سهبعدی) را در کنار انواع Word 2016 (Treemap، Sunburst، Histogram، Pareto، BoxAndWhisker، Waterfall) نشان میدهد.
آیا میتوانم یک نقطه داده را متفاوت از بقیهٔ سری آن قالببندی کنم؟
بله — به ChartSeries.DataPoints ایندکس بزنید و Format، Marker یا Explosion آن ChartDataPoint را بهصورت مستقل تنظیم کنید.