دسته بندی ها
22:11 1400/09/21

رسم نمودار بر اساس سن و تعداد افراد ثبت نام شده در Core

مشخصات سوال کننده :
کاربر : Mammadq     امتیاز کاربر : 0     رتبه کاربر : 7059
دسته بندی : Asp.net Core جی کوئری

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3381
هوش مصنوعی

پاسخ هوش مصنوعی

برای رسم نمودار بر اساس سن و تعداد افراد ثبت نام شده در Core، نخست باید سن افراد را از تاریخ تولد محاسبه کرده و سپس این داده ها را پردازش کنید. در اینجا یک راهنمایی کلی برای انجام این کار داریم:

1. **محاسبه سن:** ابتدا، سن هر فرد را محاسبه کرده و تعداد افراد در هر سن را گروه بندی کنید.

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using YourApp.Models; // جایگزین با نام فضای نام مدل شما

public class YourController : Controller
{
    private readonly YourDbContext _context; // DbContext شما

    public YourController(YourDbContext context)
    {
        _context = context;
    }

    public IActionResult GetChartData()
    {
        var currentYear = DateTime.Now.Year;
        var ageGroups = _context.Users // فرض بر این است که Users جدول افراد است
            .Select(user => currentYear - user.DateOfBirth.Year)
            .GroupBy(age => age)
            .Select(group => new
            {
                Age = group.Key,
                Count = group.Count()
            })
            .ToList();

        return Json(ageGroups); // ارسال داده ها به ویو به صورت JSON
    }
}

2. **ارسال داده ها به ویو:** پس از محاسبه داده ها، می توانید این داده ها را به ویو ارسال کنید.

3. **استفاده از کتابخانه های جاوا اسکریپت برای رسم نمودار:** یکی از کتابخانه های محبوب برای رسم نمودار، Chart.js است. شما می توانید از این کتابخانه برای رسم نمودار خطی استفاده کنید.

const ctx = document.getElementById('myChart').getContext('2d');
fetch('/YourController/GetChartData') // به آدرس کنترلر خود بروید
    .then(response => response.json())
    .then(data => {
        const labels = data.map(item => item.Age);
        const counts = data.map(item => item.Count);
        
        const myChart = new Chart(ctx, {
            type: 'line', // نوع نمودار
            data: {
                labels: labels,
                datasets: [{
                    label: 'تعداد افراد ثبت نام شده براساس سن',
                    data: counts,
                    borderColor: 'rgba(75, 192, 192, 1)',
                    borderWidth: 1,
                    fill: false
                }]
            },
            options: {
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });
    });

4. **نهایتاً ویو خود را آماده کنید:** حتماً کد JavaScript و Canvas برای Chart.js را در قالب HTML خود قرار دهید.

<canvas id="myChart" width="400" height="200"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>

    // کد JavaScript برای رسم نمودار در اینجا قرار می گیرد.

</script>

با این مراحل، می توانید به راحتی نمودار خطی بر اساس سن و تعداد افراد را رسم کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 13:47 1400/09/23

برای رسم نمودار پلاگین های جاوا اسکریپت زیادی وجود داره. ابتدا باید یکی از این پلاگین ها رو انتخاب کنید و سپس داکیومنت های اون رو مطالعه بفرمایید. بهتره ابتدا شما یکی از پلاگینها رو انتخاب کنید و باهاش کار کنید و اگر مشکلی داشتید در حین کار مشکلتون رو مطرح کنید تا بررسی بهتری بشه کرد.

معرفی پلاگین رسم نمودار در جی کوئری

به این پاسخ امتیاز بدهید    1
امتیاز: 1664 رتبه: 1
پاسخ دهنده : Mammadq 13:50 1400/09/23

ممنون از پاسختون ولی من مشکلم سمت بک اند هستش
اینکه منطق تعداد افراد بر اساس تاریخ تولد رو سنشون رو بدست بیارم مد نظرم هستش

به این پاسخ امتیاز بدهید    0
امتیاز: 0 رتبه: 7059
1 نظر
saedbfd : برای اینکه پاسخ دقیق تری دریافت کنید باید جزییات سوالتون و کارهایی که انجام دادید رو شرح بدید. سوال شما خیلی کلی هست و هیچ اشاره ای به جداول، فیلدهایی که دارید، اطلاعات و ... نشده. به همین خاطر نمیشه دقیق پاسخ داد و یک پاسخ کلی دریافت می کنید.

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 02:57 1400/09/23
پاسخ دهنده : zoheirs 16:03 1400/09/29

با سلام

شما ابتدا بایستی طبق تاریخ تولد که میگرید سن رو محاسبه کنید

ابتدا تعداد افراد رو در حلقه foreach قرار بدید و که بتونید سن رو بدست بیارید شما چندین راه دارید اول شرط بزارید تعداد افراد هر تاریخ رو بدست بیارید  سپس تابع زیر  که سن رو مشخص میکنه رو در حلقه بزارید تا به شما سن رو بده 

برای بدست اوردن سال  جاری

 string years = PC.GetYear(DateTime.Now).ToString("0000") + "/" + PC.GetMonth(DateTime.Now).ToString("00") + "/" + PC.GetDayOfMonth(DateTime.Now).ToString("00");

تابع محاسبه زیر رو برای اختلاف به کار بگیرید

 



 public static string personage(string BirthDayDate, string dateyear)
        {
            string year;
            DateTime date1 = DateTime.Parse(ConvertShamsiToMiladiAge(BirthDayDate));
            DateTime date2 = DateTime.Parse(ConvertShamsiToMiladiAge(dateyear));
            int years = date2.Year - date1.Year;
            year = years.ToString();
            return year;
        }

 

سپس در خود حلقه یک لیست تعریف کنید حالا دو تا پارامتر بایستی به لیست ارسال کن

اول سن که طبق تابع بدست میاد وتعداد افراد رو بفرست.

برای نمودار از یک

viewbag استفاده کن و ببر به سمت ویو و حالا یک نمودار خطی استفاده کن

موفق باشید

 

به این پاسخ امتیاز بدهید    1
امتیاز: 5 رتبه: 110
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود