رسم نمودار با هوش مصنوعی؛ آموزش تبدیل داده و متن به چارت حرفهای
در این راهنما یاد میگیرید چگونه دادههای Excel، CSV یا متن را با هوش مصنوعی به نمودارهای حرفهای تبدیل کنید؛ از انتخاب نوع چارت و پاکسازی داده تا ساخت خروجی تعاملی با Python و API درواره.
رسم نمودار با هوش مصنوعی میتواند دادههای خام و پراکنده را به تصویری قابلفهم تبدیل کند. کافی است یک جدول فروش، فایل Excel، گزارش ماهانه یا مجموعهای از اعداد داشته باشید تا هوش مصنوعی نوع نمودار مناسب را پیشنهاد دهد، داده را مرتب کند، عنوان و برچسب بنویسد و حتی کد لازم برای ساخت خروجی تعاملی را تولید کند.
اما یک نمودار زیبا لزوماً نمودار درستی نیست. اگر نوع چارت با سوال تحلیلی هماهنگ نباشد، محور از صفر شروع نشود، واحد اندازهگیری مشخص نباشد یا داده ناقص باشد، تصویر نهایی ممکن است مخاطب را به نتیجهای اشتباه برساند.
در این آموزش یاد میگیریم چگونه از هوش مصنوعی برای انتخاب، طراحی و تولید نمودار استفاده کنیم؛ بدون اینکه صحت داده و کنترل انسانی را کنار بگذاریم. علاوه بر ابزارهای آماده، یک روش عملی برای ساخت خودکار نمودار با Python، Plotly و API هوش مصنوعی درواره نیز پیادهسازی میکنیم.
هوش مصنوعی چگونه نمودار میسازد؟
مدل هوش مصنوعی میتواند چند بخش از فرایند مصورسازی داده را انجام دهد:
- تشخیص ستونهای عددی و دستهای
- شناسایی تاریخ، درصد، مبلغ و تعداد
- پیشنهاد نوع نمودار مناسب
- پاکسازی عنوان ستونها
- مرتبسازی داده
- تشخیص مقدارهای خالی
- پیشنهاد عنوان و زیرعنوان
- تولید توضیح کوتاه برای نمودار
- تولید کد Python یا JavaScript
- تولید تنظیمات JSON برای کتابخانه نمودار
- پیشنهاد رنگبندی
- ساخت متن جایگزین یا Alt Text
- خلاصه کردن نکات قابلمشاهده در نمودار
هوش مصنوعی نباید اعداد ناموجود را حدس بزند یا بدون اعلام، داده خام را تغییر دهد. مسئولیت صحت داده و تفسیر نهایی همچنان بر عهده استفادهکننده است.
تفاوت تحلیل داده و رسم نمودار
این دو فرایند به یکدیگر مرتبطاند اما یکسان نیستند.
تحلیل داده
در تحلیل، هدف پیدا کردن الگو، رابطه، تغییر یا پاسخ یک سوال است.
مثال:
کدام دسته محصول بیشترین رشد فروش را داشته است؟
رسم نمودار
در رسم نمودار، هدف نمایش روشن یک پیام یا نتیجه است.
مثال:
نمایش نرخ رشد فروش هر دسته با نمودار میلهای مرتبشده
ممکن است یک فایل دهها ستون داشته باشد، اما برای پاسخ به یک سوال فقط به دو یا سه ستون نیاز داشته باشید. قرار دادن تمام اطلاعات در یک نمودار معمولاً باعث شلوغی میشود.
قبل از ساخت نمودار، سوال را مشخص کنید
بهترین نمودار از یک سوال روشن شروع میشود، نه از انتخاب رنگ و قالب.
نمونه سوالهای مناسب:
- فروش در ۱۲ ماه گذشته چگونه تغییر کرده است؟
- کدام محصول بیشترین فروش را دارد؟
- سهم هر دسته از کل درآمد چقدر است؟
- میان هزینه تبلیغات و فروش چه رابطهای وجود دارد؟
- توزیع سن مشتریان چگونه است؟
- عملکرد واقعی با هدف تعیینشده چه تفاوتی دارد؟
- کدام استان بیشترین تعداد سفارش را دارد؟
- نرخ تبدیل هر مرحله قیف فروش چقدر است؟
اگر سوال مشخص نباشد، هوش مصنوعی ممکن است نموداری بسازد که از نظر ظاهری خوب اما از نظر تصمیمگیری بیفایده باشد.
انتخاب نمودار مناسب
| هدف | نمودار مناسب | مثال |
|---|---|---|
| مقایسه چند دسته | میلهای یا ستونی | فروش محصولات |
| نمایش تغییر در زمان | خطی | فروش ماهانه |
| نمایش سهم از کل | میلهای انباشته یا دایرهای محدود | سهم کانالهای فروش |
| نمایش رابطه دو متغیر | Scatter | تبلیغات و فروش |
| نمایش توزیع | Histogram یا Box Plot | توزیع سن مشتریان |
| مقایسه هدف و عملکرد | Bullet یا میلهای | فروش واقعی و هدف |
| نمایش ترکیب در زمان | Area یا Stacked Area | سهم منابع ترافیک |
| نمایش شدت در جدول | Heatmap | فروش براساس روز و ساعت |
| نمایش مراحل ریزش | Funnel | قیف خرید |
| نمایش داده جغرافیایی | نقشه | سفارش براساس استان |
| نمایش سلسلهمراتب | Treemap یا Sunburst | فروش دسته و زیردسته |
| نمایش تغییرات افزایشی و کاهشی | Waterfall | تغییر سود |
| نمایش چند شاخص محدود | Radar | مقایسه ویژگی محصولات |
Flourish نیز تأکید میکند که هر نوع نمودار برای نمایش الگوی مشخصی مانند تغییر در زمان، رابطه، توزیع یا سهم طراحی شده و انتخاب اشتباه میتواند فهم داده را دشوار کند. راهنمای انتخاب نمودار Flourish
چه زمانی از نمودار میلهای استفاده کنیم؟
نمودار میلهای برای مقایسه مقدار چند دسته مناسب است:
محصول A: 120
محصول B: 85
محصول C: 160
محصول D: 105
اگر نام دستهها طولانی است، نمودار میلهای افقی معمولاً خواناتر از نمودار ستونی خواهد بود.
کاربردها:
- مقایسه فروش محصولات
- تعداد کاربران هر پلن
- عملکرد واحدها
- نتایج نظرسنجی
- تعداد سفارش هر شهر
بهتر است میلهها براساس مقدار یا ترتیب منطقی مرتب شوند.
چه زمانی از نمودار خطی استفاده کنیم؟
نمودار خطی برای نمایش تغییر یک یا چند متغیر در طول زمان مناسب است.
کاربردها:
- فروش ماهانه
- تعداد کاربران روزانه
- نرخ تبدیل هفتگی
- هزینه زیرساخت
- زمان پاسخگویی
- تغییر امتیاز رضایت
اگر ترتیب محور افقی زمانی نیست، نمودار خطی ممکن است رابطهای غیرواقعی میان نقاط القا کند.
چه زمانی از نمودار دایرهای استفاده کنیم؟
نمودار دایرهای فقط زمانی مناسب است که:
- اجزا واقعاً بخشهایی از یک کل باشند.
- مجموع آنها ۱۰۰ درصد باشد.
- تعداد دستهها کم باشد.
- تفاوت بخشها قابلمشاهده باشد.
برای ۱۵ دسته با مقادیر نزدیک، نمودار دایرهای انتخاب مناسبی نیست. نمودار میلهای مرتبشده مقایسه را سادهتر میکند.
از نمودار سهبعدی دایرهای نیز خودداری کنید؛ زاویه و عمق میتوانند اندازه بخشها را متفاوت از مقدار واقعی نشان دهند.
چه زمانی از Scatter Plot استفاده کنیم؟
Scatter Plot یا نمودار پراکندگی برای بررسی رابطه دو متغیر عددی استفاده میشود.
مثال:
- بودجه تبلیغات و فروش
- زمان پاسخ و رضایت مشتری
- قیمت محصول و تعداد فروش
- تعداد کاربران و هزینه زیرساخت
وجود یک الگوی بصری به معنی رابطه علت و معلولی نیست. هوش مصنوعی نیز نباید صرفاً براساس همبستگی، نتیجهگیری قطعی تولید کند.
آمادهسازی داده برای رسم نمودار
کیفیت نمودار مستقیماً به کیفیت داده وابسته است.
عنوان ستونها را واضح کنید
نامناسب:
v1, v2, x, total2
مناسب:
month, product, revenue_irr, order_count
هر ستون فقط یک نوع داده داشته باشد
در ستون مبلغ نباید هم عدد، هم عبارت «نامشخص» و هم واحد تومان وجود داشته باشد.
نامناسب:
120000
85 هزار تومان
نامشخص
130,000 تومان
مناسبتر:
120000
85000
130000
واحد را در نام ستون مشخص کنید:
revenue_toman
تاریخها را یکدست کنید
از ترکیب این شکلها خودداری کنید:
1405/01/01
1 فروردین
2026-03-21
فروردین ۱۴۰۵
یک قالب مشخص برای تمام ردیفها انتخاب کنید.
مقادیر خالی را پنهان نکنید
مقدار خالی با صفر یکسان نیست.
- صفر یعنی مقدار اندازهگیری شده و برابر صفر بوده است.
- مقدار خالی یعنی اطلاعات وجود ندارد یا ثبت نشده است.
واحدها را هماهنگ کنید
اگر بخشی از مبلغها تومان و بخشی ریال هستند، پیش از رسم نمودار آنها را به یک واحد تبدیل کنید.
داده تکراری را بررسی کنید
ممکن است یک سفارش یا ماه دوبار ثبت شده باشد.
داده خام را نگه دارید
پاکسازی را روی یک نسخه جداگانه انجام دهید تا امکان مقایسه با منبع اصلی وجود داشته باشد.
نمونه داده مناسب
month,revenue_million_toman,orders
فروردین,420,850
اردیبهشت,465,910
خرداد,510,980
تیر,488,945
مرداد,560,1080
شهریور,615,1160
نام ستونها مشخص است، واحد مبلغ در عنوان آمده و هر ردیف ساختار یکسانی دارد.
آموزش رسم نمودار با هوش مصنوعی، مرحلهبهمرحله
مرحله اول: هدف نمودار را بنویسید
مثال:
میخواهم تغییر درآمد ماهانه را نشان دهم و ماههایی را که نسبت به ماه قبل کاهش داشتهاند مشخص کنم.
مرحله دوم: داده را معرفی کنید
به مدل بگویید:
- هر ردیف نشاندهنده چیست.
- واحد ستونها چیست.
- بازه زمانی چیست.
- مقدار خالی چه معنایی دارد.
- مخاطب نمودار چه کسی است.
- خروجی کجا استفاده میشود.
مرحله سوم: از مدل بخواهید داده را بررسی کند
پیش از رسم نمودار، این پرامپت را استفاده کنید:
داده زیر را برای رسم نمودار بررسی کن.
وظایف:
- نوع هر ستون را تشخیص بده.
- مقدارهای خالی را گزارش کن.
- ردیفهای تکراری را مشخص کن.
- واحدهای ناسازگار را پیدا کن.
- تاریخهای نامعتبر را گزارش کن.
- هیچ مقدار جدیدی نساز.
- داده را بدون تایید من اصلاح نکن.
- در پایان بگو برای رسم نمودار به چه اصلاحاتی نیاز است.
داده:
[جدول یا CSV]
مرحله چهارم: نوع نمودار را انتخاب کنید
برای پاسخ به سوال زیر، سه نوع نمودار پیشنهاد بده:
سوال:
روند درآمد ماهانه و ماههای دارای کاهش را نشان بده.
برای هر پیشنهاد بنویس:
- نوع نمودار
- دلیل انتخاب
- محور افقی
- محور عمودی
- نحوه نمایش ماههای کاهشی
- محدودیت نمودار
داده جدید تولید نکن.
مرحله پنجم: پیام اصلی را تعیین کنید
هر نمودار باید یک پیام اصلی داشته باشد:
درآمد در نیمه اول سال روند صعودی داشته، اما در تیر کاهش موقت ثبت شده است.
عنوان نمودار بهتر است پیام را منتقل کند.
عنوان ضعیف:
نمودار درآمد
عنوان بهتر:
درآمد ماهانه تا شهریور ۴۶ درصد افزایش یافت
عنوان دوم فقط زمانی استفاده شود که محاسبه ۴۶ درصد دقیق و تأیید شده باشد.
مرحله ششم: خروجی اولیه را بسازید
میتوانید از مدل بخواهید:
- کد Python
- تنظیمات JSON
- جدول آماده ورود به Canva
- راهنمای ساخت در Excel
- عنوان و زیرعنوان
- توضیح نمودار
- Alt Text
مرحله هفتم: اعداد را با داده اصلی تطبیق دهید
موارد زیر را بررسی کنید:
- تعداد ردیفها
- حداقل و حداکثر
- مجموع
- میانگین
- ترتیب زمانی
- واحد
- درصدها
- دستههای حذفشده
- فیلترهای اعمالشده
مرحله هشتم: خروجی را روی دستگاه واقعی بررسی کنید
نموداری که روی مانیتور بزرگ خواناست ممکن است روی موبایل ناخوانا باشد. اندازه برچسب، فاصله، Tooltip و نسبت تصویر را آزمایش کنید.
پرامپتهای آماده رسم نمودار
پرامپت انتخاب بهترین نمودار
نقش تو متخصص مصورسازی داده است.
براساس سوال و ساختار داده زیر، مناسبترین نمودار را پیشنهاد بده.
سوال:
[سوال موردنظر]
مخاطب:
[مدیر، مشتری، کاربر عمومی یا تیم فنی]
محل انتشار:
[گزارش، وبسایت، ارائه یا شبکه اجتماعی]
ستونها:
[نام، نوع و واحد ستونها]
خروجی:
1. نمودار پیشنهادی اصلی
2. دلیل انتخاب
3. محورهای نمودار
4. ترتیب داده
5. عنوان پیشنهادی
6. نکات طراحی
7. دو گزینه جایگزین
8. نمودارهایی که نباید استفاده شوند و دلیل آن
هیچ داده یا نتیجهای را حدس نزن.
پرامپت تبدیل Excel به نمودار
فایل Excel زیر شامل داده فروش است.
ابتدا:
- ساختار ستونها را بررسی کن.
- مقدارهای خالی و تکراری را گزارش کن.
- واحدها را شناسایی کن.
- ترتیب تاریخ را کنترل کن.
سپس برای این سوال نمودار پیشنهاد بده:
فروش هر محصول در شش ماه گذشته چگونه تغییر کرده است؟
خروجی:
- نوع نمودار
- ستونهای موردنیاز
- فیلترهای لازم
- عنوان
- راهنمای ساخت در Excel
- کد Python با Plotly
داده اصلی را تغییر نده.
پرامپت نمودار مناسب ارائه مدیریتی
براساس داده زیر یک نمودار مناسب ارائه مدیریتی طراحی کن.
هدف:
مدیر باید در کمتر از ۱۰ ثانیه پیام اصلی را درک کند.
شرایط:
- فقط یک پیام اصلی نمایش داده شود.
- از نمودار سهبعدی استفاده نشود.
- تعداد رنگها محدود باشد.
- مقدارهای مهم برچسب داشته باشند.
- واحد محور مشخص باشد.
- منبع و بازه زمانی پیشنهاد شود.
- داده حذف یا دستکاری نشود.
خروجی:
نوع نمودار، عنوان، زیرعنوان، رنگبندی،
توضیح طراحی و کد Plotly
پرامپت ساخت نمودار برای شبکه اجتماعی
داده زیر را برای یک پست عمودی شبکه اجتماعی آماده کن.
اندازه خروجی:
1080×1350
شرایط:
- عنوان کوتاه و خوانا باشد.
- حداکثر ۷ دسته نمایش داده شود.
- برچسبها برای موبایل مناسب باشند.
- منبع داده در پایین نمودار قرار بگیرد.
- از رنگهای بسیار نزدیک استفاده نشود.
- نتیجهگیری بیش از داده نوشته نشود.
ابتدا محدودیتهای داده را گزارش کن و سپس طراحی پیشنهادی بده.
پرامپت بررسی نمودار موجود
مشخصات نمودار زیر را ارزیابی کن.
بررسی کن:
- آیا نوع نمودار با هدف مناسب است؟
- آیا محور میتواند گمراهکننده باشد؟
- آیا واحدها مشخصاند؟
- آیا رنگها معنای روشنی دارند؟
- آیا برچسبها خوانا هستند؟
- آیا عنوان نتیجهای فراتر از داده میگیرد؟
- آیا دستهای حذف شده است؟
- آیا نمودار در موبایل قابلفهم است؟
برای هر مشکل، اصلاح مشخص پیشنهاد بده.
پرامپت تولید Alt Text نمودار
برای نمودار زیر Alt Text فارسی بنویس.
شرایط:
- نوع نمودار را مشخص کن.
- موضوع و بازه زمانی را بگو.
- مهمترین روند یا مقایسه قابلمشاهده را توضیح بده.
- همه نقاط داده را تکرار نکن.
- از نتیجهگیری علت و معلولی خودداری کن.
- متن حداکثر ۳۰۰ کاراکتر باشد.
مشخصات نمودار:
[نوع، محورها و داده]
ابزارهای ساخت نمودار با هوش مصنوعی
درواره
درواره یک زیرساخت API هوش مصنوعی است، نه نرمافزار آماده رسم نمودار. با استفاده از API درواره میتوانید مدلهای متنی را در فرایند مصورسازی داده به کار بگیرید تا:
- ساختار داده را بررسی کنند.
- نوع نمودار پیشنهاد دهند.
- تنظیمات نمودار را بهصورت JSON تولید کنند.
- عنوان و توضیح بنویسند.
- کد Plotly یا Matplotlib تولید کنند.
- Alt Text بسازند.
- خطاهای احتمالی داده را گزارش کنند.
- ساخت نمودار در نرمافزار شما خودکار شود.
برای مشاهده مدلها، قابلیتها و قیمتهای بهروز به صفحه مدلهای درواره مراجعه کنید.
Canva
Canva ابزار ساخت نمودار و قالبهای گرافیکی مختلف ارائه میکند. امکان ورود داده و بارگذاری فایلهایی مانند CSV، TSV و XLSX در برخی ابزارهای نمودار آن وجود دارد. Canva Graph Maker
Canva برای خروجی شبکه اجتماعی، گزارش تصویری و ارائه مناسب است؛ بهخصوص وقتی طراحی نهایی به متن، آیکون و هویت بصری نیاز دارد.
Datawrapper
Datawrapper برای ساخت نمودار، نقشه و جدول قابلانتشار در وب، ارائه و محتوای چاپی طراحی شده است. این ابزار خروجیهای تعاملی و واکنشگرا ارائه میکند. Datawrapper
Flourish
Flourish ابزاری بدون نیاز به کدنویسی برای ساخت نمودار، نقشه، Story و محتوای تعاملی است. قالبهای آن برای روایت داده و خروجیهای متحرک کاربرد دارند. Flourish
Plotly
Plotly کتابخانهای برای ساخت نمودارهای تعاملی با Python است و از نمودارهای خطی، میلهای، پراکندگی، Heatmap، Histogram و انواع دیگر پشتیبانی میکند. مستندات Plotly Python
ساخت نمودار با Python و Plotly
نصب کتابخانهها:
pip install pandas plotly kaleido
فایل نمونه sales.csv:
month,revenue_million_toman,orders
فروردین,420,850
اردیبهشت,465,910
خرداد,510,980
تیر,488,945
مرداد,560,1080
شهریور,615,1160
کد نمودار خطی:
from pathlib import Path
import pandas as pd
import plotly.express as px
input_path = Path("sales.csv")
output_html = Path("monthly-revenue.html")
output_png = Path("monthly-revenue.png")
df = pd.read_csv(input_path)
required_columns = {
"month",
"revenue_million_toman",
}
missing_columns = required_columns - set(df.columns)
if missing_columns:
raise ValueError(
f"Missing columns: {sorted(missing_columns)}"
)
fig = px.line(
df,
x="month",
y="revenue_million_toman",
markers=True,
title="روند درآمد ماهانه",
labels={
"month": "ماه",
"revenue_million_toman": "درآمد، میلیون تومان",
},
)
fig.update_traces(
line={
"color": "#6D5DFB",
"width": 4,
},
marker={
"size": 10,
},
)
fig.update_layout(
template="plotly_white",
font={
"family": "Vazirmatn, Tahoma, Arial",
"size": 15,
},
title={
"x": 0.95,
"xanchor": "right",
},
hovermode="x unified",
margin={
"l": 70,
"r": 40,
"t": 90,
"b": 70,
},
)
fig.write_html(
output_html,
include_plotlyjs="cdn",
)
fig.write_image(
output_png,
width=1400,
height=800,
scale=2,
)
print("Created:", output_html)
print("Created:", output_png)
فایل HTML تعاملی است و نسخه PNG را میتوان در Ghost یا شبکههای اجتماعی استفاده کرد.
ساخت نمودار میلهای مرتبشده
import pandas as pd
import plotly.express as px
df = pd.DataFrame(
{
"product": [
"محصول الف",
"محصول ب",
"محصول ج",
"محصول د",
],
"sales": [
125,
82,
164,
108,
],
}
)
df = df.sort_values(
"sales",
ascending=True,
)
fig = px.bar(
df,
x="sales",
y="product",
orientation="h",
text="sales",
title="فروش محصولات",
labels={
"sales": "فروش، میلیون تومان",
"product": "محصول",
},
)
fig.update_traces(
marker_color="#6D5DFB",
textposition="outside",
)
fig.update_layout(
template="plotly_white",
showlegend=False,
font={
"family": "Vazirmatn, Tahoma, Arial",
"size": 15,
},
)
fig.show()
مرتب کردن میلهها مقایسه را سادهتر میکند، مگر اینکه دستهها ترتیب طبیعی یا زمانی داشته باشند.
ساخت نمودار از متن با API درواره
روش حرفهای این نیست که مدل را مستقیماً مسئول رسم نمودار کنیم. بهتر است مدل یک «مشخصات نمودار» یا Chart Specification تولید کند و برنامه شما آن را اعتبارسنجی و رندر کند.
فرایند پیشنهادی:
- کاربر هدف نمودار را توضیح میدهد.
- فایل CSV در سرور خوانده میشود.
- فقط نام ستونها و خلاصه کنترلشده به مدل ارسال میشود.
- مدل نوع نمودار و ستونهای لازم را پیشنهاد میدهد.
- برنامه پیشنهاد را اعتبارسنجی میکند.
- کتابخانه Plotly نمودار را میسازد.
- خروجی توسط کاربر بررسی میشود.
ساخت Chart Specification
نمونه خروجی:
{
"chart_type": "line",
"x_column": "month",
"y_columns": [
"revenue_million_toman"
],
"title": "روند درآمد ماهانه",
"x_label": "ماه",
"y_label": "درآمد، میلیون تومان",
"sort": {
"column": "month",
"direction": "source"
},
"show_values": false,
"warnings": []
}
بهتر است مدل فقط از انواع نمودار تعریفشده در برنامه انتخاب کند:
bar
line
scatter
area
histogram
box
heatmap
با این روش، نیازی نیست کد تولیدشده توسط مدل را مستقیماً اجرا کنید.
تولید مشخصات نمودار با API درواره
نصب کتابخانهها:
pip install openai python-dotenv pandas plotly kaleido
فایل .env:
DARVAREH_API_KEY=YOUR_API_KEY
DARVAREH_TEXT_MODEL=YOUR_MODEL_ID
YOUR_MODEL_ID باید با Model ID مدل انتخابشده در درواره جایگزین شود.
کد:
import json
import os
from pathlib import Path
import pandas as pd
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
api_key = os.getenv("DARVAREH_API_KEY")
model_id = os.getenv("DARVAREH_TEXT_MODEL")
if not api_key:
raise RuntimeError("DARVAREH_API_KEY is not configured")
if not model_id:
raise RuntimeError("DARVAREH_TEXT_MODEL is not configured")
client = OpenAI(
api_key=api_key,
base_url="https://api.darvareh.ir/v1",
)
csv_path = Path("sales.csv")
df = pd.read_csv(csv_path)
column_summary = []
for column in df.columns:
column_summary.append(
{
"name": column,
"dtype": str(df[column].dtype),
"missing_count": int(df[column].isna().sum()),
"sample_values": (
df[column]
.dropna()
.astype(str)
.head(5)
.tolist()
),
}
)
user_goal = """
تغییر درآمد را در طول ماهها نشان بده و
نمودار برای ارائه مدیریتی ساده باشد.
""".strip()
prompt = f"""
برای داده زیر مشخصات نمودار تولید کن.
هدف کاربر:
{user_goal}
ساختار ستونها:
{json.dumps(column_summary, ensure_ascii=False)}
خروجی فقط JSON معتبر با این ساختار باشد:
{{
"chart_type": "line یا bar یا scatter یا area یا histogram یا box",
"x_column": "نام دقیق ستون",
"y_columns": ["نام دقیق ستون"],
"title": "عنوان فارسی",
"x_label": "برچسب فارسی محور افقی",
"y_label": "برچسب فارسی محور عمودی",
"show_values": true,
"warnings": []
}}
قواعد:
- فقط از نام ستونهای موجود استفاده کن.
- داده جدید تولید نکن.
- اگر هدف با داده قابل انجام نیست، آن را در warnings بنویس.
- حداکثر دو ستون برای y_columns انتخاب کن.
- نمودار سهبعدی پیشنهاد نده.
""".strip()
response = client.chat.completions.create(
model=model_id,
messages=[
{
"role": "system",
"content": (
"تو متخصص مصورسازی داده هستی. "
"فقط مشخصات نمودار تولید کن و "
"نباید دادهای را حدس بزنی."
),
},
{
"role": "user",
"content": prompt,
},
],
temperature=0.1,
)
chart_spec = json.loads(
response.choices[0].message.content
)
Path("chart-spec.json").write_text(
json.dumps(
chart_spec,
ensure_ascii=False,
indent=2,
),
encoding="utf-8",
)
print(json.dumps(
chart_spec,
ensure_ascii=False,
indent=2,
))
اعتبارسنجی مشخصات نمودار
خروجی مدل باید پیش از رندر بررسی شود:
ALLOWED_CHART_TYPES = {
"line",
"bar",
"scatter",
"area",
"histogram",
"box",
}
def validate_chart_spec(
spec: dict,
dataframe: pd.DataFrame,
) -> list[str]:
errors = []
chart_type = spec.get("chart_type")
x_column = spec.get("x_column")
y_columns = spec.get("y_columns", [])
if chart_type not in ALLOWED_CHART_TYPES:
errors.append(
f"Unsupported chart type: {chart_type}"
)
if x_column not in dataframe.columns:
errors.append(
f"Unknown x column: {x_column}"
)
if not isinstance(y_columns, list):
errors.append(
"y_columns must be an array"
)
else:
for column in y_columns:
if column not in dataframe.columns:
errors.append(
f"Unknown y column: {column}"
)
if len(y_columns) > 2:
errors.append(
"No more than two Y columns are allowed"
)
return errors
استفاده:
errors = validate_chart_spec(
chart_spec,
df,
)
if errors:
raise ValueError(
"Invalid chart specification:\n"
+ "\n".join(errors)
)
رندر امن نمودار براساس تنظیمات
import plotly.express as px
def render_chart(
dataframe: pd.DataFrame,
spec: dict,
):
chart_type = spec["chart_type"]
x_column = spec["x_column"]
y_columns = spec["y_columns"]
y_value = (
y_columns[0]
if len(y_columns) == 1
else y_columns
)
common_args = {
"data_frame": dataframe,
"x": x_column,
"title": spec["title"],
"labels": {
x_column: spec["x_label"],
**{
column: spec["y_label"]
for column in y_columns
},
},
}
if chart_type == "line":
figure = px.line(
**common_args,
y=y_value,
markers=True,
)
elif chart_type == "bar":
figure = px.bar(
**common_args,
y=y_value,
text_auto=spec.get(
"show_values",
False,
),
)
elif chart_type == "scatter":
figure = px.scatter(
**common_args,
y=y_value,
)
elif chart_type == "area":
figure = px.area(
**common_args,
y=y_value,
)
elif chart_type == "histogram":
figure = px.histogram(
dataframe,
x=x_column,
title=spec["title"],
labels={
x_column: spec["x_label"],
},
)
elif chart_type == "box":
figure = px.box(
**common_args,
y=y_value,
)
else:
raise ValueError(
f"Unsupported chart type: {chart_type}"
)
figure.update_layout(
template="plotly_white",
font={
"family": "Vazirmatn, Tahoma, Arial",
"size": 15,
},
)
return figure
ساخت خروجی:
figure = render_chart(
df,
chart_spec,
)
figure.write_html(
"ai-generated-chart.html",
include_plotlyjs="cdn",
)
figure.write_image(
"ai-generated-chart.png",
width=1400,
height=800,
scale=2,
)
این معماری از اجرای مستقیم کد تولیدشده توسط مدل جلوگیری میکند و کنترل نوع نمودار و ستونهای مجاز را در برنامه نگه میدارد.
ساخت نمودار برای Ghost
برای مقاله Ghost سه روش اصلی دارید:
تصویر PNG یا WebP
سادهترین و سازگارترین روش است. برای تصاویر نمودار بهتر است کیفیت نوشتهها و اعداد را پس از تبدیل به WebP بررسی کنید.
فایل SVG
SVG برای نمودارهای خطی و برداری وضوح بالایی دارد، اما باید سازگاری قالب و سیاست بارگذاری سایت بررسی شود.
Embed نمودار تعاملی
ابزارهایی مانند Datawrapper و Flourish امکان Embed نمودار را ارائه میکنند. در Ghost میتوانید کد Embed را داخل HTML Card قرار دهید.
پیش از انتشار، نمایش نمودار را روی موبایل بررسی کنید و از اسکرول افقی غیرضروری جلوگیری کنید.
قواعد طراحی نمودار فارسی
جهت متن
عنوان، توضیح و یادداشت فارسی بهتر است راستچین باشند. محورهای عددی همچنان باید براساس منطق نمودار نمایش داده شوند.
فونت
از فونتی استفاده کنید که اعداد و حروف فارسی را واضح نمایش دهد. در خروجی وب، فونت باید روی سایت بارگذاری شده یا جایگزین مناسب داشته باشد.
ترکیب فارسی و انگلیسی
عبارتهایی مانند API، CTR یا Conversion Rate ممکن است ترتیب متن را بههم بزنند. خروجی را در مرورگر و تصویر نهایی کنترل کنید.
واحد
واحد را در عنوان محور یا زیرعنوان بنویسید:
درآمد، میلیون تومان
زمان پاسخ، میلیثانیه
نرخ تبدیل، درصد
اعداد فارسی یا انگلیسی
برای گزارش فارسی میتوانید از اعداد فارسی استفاده کنید، اما یکدستی مهمتر است. در نمودارهای فنی، اعداد انگلیسی ممکن است خواناتر و با ابزارها سازگارتر باشند.
رنگ
از یک رنگ اصلی و یک رنگ تأکیدی استفاده کنید. تعداد زیاد رنگها فقط زمانی مناسب است که رنگ معنای واقعی و مشخصی داشته باشد.
نمودار ثابت یا تعاملی؟
| ویژگی | نمودار ثابت | نمودار تعاملی |
|---|---|---|
| فرمت | PNG، WebP، SVG | HTML و JavaScript |
| استفاده | شبکه اجتماعی، PDF، مقاله | داشبورد و وبسایت |
| Tooltip | ندارد | دارد |
| فیلتر | ندارد | ممکن است داشته باشد |
| اشتراکگذاری | ساده | نیازمند میزبانی یا Embed |
| چاپ | مناسب | نیازمند خروجی ثابت |
| موبایل | قابلکنترل | باید واکنشگرا باشد |
برای مقالهای که فقط یک پیام مشخص دارد، تصویر ثابت اغلب کافی است. برای دادههای چندبعدی یا امکان جستوجو و فیلتر، نمودار تعاملی مفیدتر است.
چگونه از نمودار گمراهکننده جلوگیری کنیم؟
محور ناقص
در نمودار میلهای، شروع محور از مقداری غیر از صفر میتواند تفاوتها را بزرگتر از واقعیت نشان دهد.
حذف دستههای نامطلوب
نمایش فقط بخشی از داده بدون توضیح، برداشت نادرست ایجاد میکند.
مقایسه واحدهای متفاوت
تومان، ریال، درصد و تعداد نباید بدون توضیح روی یک محور مشترک قرار بگیرند.
استفاده از دو محور عمودی
Dual Axis میتواند رابطهای قویتر از واقعیت القا کند. فقط در صورت ضرورت و با برچسب واضح استفاده شود.
نمودار سهبعدی
زاویه دید، اندازه بخشها را تحریف میکند.
عنوان نتیجهگیرانه
عنوان نباید نتیجهای فراتر از داده بیان کند.
مقیاس زمانی نامنظم
اگر فاصله زمانی نقاط یکسان نیست، محور باید این تفاوت را نمایش دهد.
رنگبندی جهتدار
قرمز و سبز معنای ارزشی دارند. فقط وقتی مثبت و منفی بودن داده مشخص است از آنها استفاده کنید.
کنترل کیفیت نمودار تولیدشده
پیش از انتشار، این اعداد را جداگانه محاسبه و با نمودار مقایسه کنید:
print("Rows:", len(df))
print("Missing values:")
print(df.isna().sum())
print("Numeric summary:")
print(df.describe(numeric_only=True))
print("Duplicates:", df.duplicated().sum())
اگر نمودار براساس گروهبندی ساخته شده است، جدول گروهبندی را نیز چاپ کنید:
summary = (
df.groupby("product", as_index=False)
["sales"]
.sum()
.sort_values("sales", ascending=False)
)
print(summary)
همیشه باید بتوانید هر میله، نقطه یا خط نمودار را به مقدار مشخصی در جدول برگردانید.
چکلیست نهایی رسم نمودار
پیش از انتشار بررسی کنید:
- سوال تحلیلی مشخص است.
- نوع نمودار با سوال هماهنگ است.
- داده از منبع معتبر گرفته شده است.
- واحدها یکسان هستند.
- مقدار خالی با صفر اشتباه نشده است.
- ردیف تکراری وجود ندارد.
- ترتیب تاریخ درست است.
- محورهای نمودار برچسب دارند.
- واحد محور مشخص است.
- عنوان پیام واقعی داده را بیان میکند.
- عنوان نتیجهای فراتر از داده نمیگیرد.
- محور میلهای بدون دلیل برش نخورده است.
- رنگها معنای مشخص دارند.
- نمودار سهبعدی نیست.
- تعداد دستهها بیش از حد نیست.
- نوشتهها روی موبایل خوانا هستند.
- اعداد نمودار با جدول اصلی تطبیق داده شدهاند.
- منبع و بازه زمانی ذکر شده است.
- Alt Text نوشته شده است.
- داده یا کد تولیدشده توسط مدل بازبینی شده است.
- خروجی تعاملی در اندازههای مختلف آزمایش شده است.
سوالات متداول
آیا هوش مصنوعی میتواند از Excel نمودار بسازد؟
بله. هوش مصنوعی میتواند ساختار فایل را بررسی، نوع نمودار پیشنهاد و کد یا تنظیمات آن را تولید کند. داده و نتیجه نهایی باید با فایل اصلی تطبیق داده شوند.
بهترین نمودار برای نمایش فروش چیست؟
برای مقایسه فروش محصولات از نمودار میلهای و برای نمایش روند فروش در زمان از نمودار خطی استفاده کنید. انتخاب نهایی به سوال موردنظر بستگی دارد.
چگونه از متن نمودار بسازیم؟
ابتدا اطلاعات متن را به جدول ساختاریافته تبدیل کنید، سپس ستونها و واحدها را کنترل کرده و نوع نمودار مناسب را انتخاب کنید. اگر متن فاقد عدد باشد، ساخت نمودار عددی ممکن نیست.
آیا میتوان نمودار فارسی ساخت؟
بله. باید فونت فارسی، راستچین بودن عنوان، نمایش واحد و ترکیب متن فارسی و انگلیسی را در خروجی نهایی کنترل کنید.
چگونه نمودار تعاملی بسازیم؟
Plotly، Datawrapper و Flourish امکان تولید نمودار تعاملی را فراهم میکنند. برای نمایش آن در سایت میتوانید فایل HTML یا کد Embed استفاده کنید.
آیا نمودار دایرهای همیشه برای درصد مناسب است؟
خیر. اگر تعداد دستهها زیاد یا مقادیر نزدیک باشند، نمودار میلهای مقایسه دقیقتری ارائه میکند. نمودار دایرهای برای تعداد کمی از بخشهای یک کل مناسب است.
آیا هوش مصنوعی ممکن است نمودار اشتباه بسازد؟
بله. مدل ممکن است ستون نامناسب انتخاب کند، واحد را اشتباه بفهمد یا داده ناقص را نادرست تفسیر کند. مشخصات نمودار و اعداد نهایی باید اعتبارسنجی شوند.
آیا درواره یک نرمافزار نمودارساز است؟
درواره زیرساخت API هوش مصنوعی است. میتوانید از مدلهای آن برای تحلیل ساختار داده، انتخاب نمودار، تولید مشخصات JSON و ساخت کد موردنیاز نرمافزار نمودارساز استفاده کنید.
هزینه استفاده از API برای تولید نمودار چقدر است؟
هزینه به مدل انتخابی، حجم داده، تعداد توکنها و تعداد درخواستها بستگی دارد. برای مشاهده قیمتهای بهروز، صفحه مدلهای درواره را بررسی کنید.
جمعبندی
رسم نمودار با هوش مصنوعی میتواند فاصله میان یک فایل خام و یک تصویر قابلفهم را کوتاه کند. هوش مصنوعی در انتخاب نوع نمودار، آمادهسازی عنوان، تولید تنظیمات JSON، نوشتن کد و توضیح خروجی مفید است؛ اما نباید جای کنترل صحت داده را بگیرد.
برای نمودارهای ساده و طراحیشده میتوانید از Canva استفاده کنید. Datawrapper و Flourish برای محتوای وب و نمودار تعاملی مناسباند و Plotly امکان ساخت خروجیهای برنامهپذیر با Python را فراهم میکند.
اگر میخواهید قابلیت تبدیل داده به نمودار را به نرمافزار، داشبورد یا سامانه گزارشگیری خود اضافه کنید، API هوش مصنوعی درواره میتواند بخش تحلیل دستور کاربر و تولید Chart Specification را انجام دهد.
برای شروع، در درواره ثبتنام کنید، مدل مناسب را از صفحه مدلها انتخاب کنید و اولین فرایند تولید کنترلشده نمودار را بسازید.
مقالات مرتبط
- تحلیل فایل CSV با هوش مصنوعی
- کار با Excel و فرمولها با هوش مصنوعی
- تبدیل متن به جدول با هوش مصنوعی
- ساخت اینفوگرافیک فارسی با هوش مصنوعی
- ساخت گزارش با هوش مصنوعی
- ساخت فلوچارت با هوش مصنوعی
- آموزش خروجی ساختاریافته و JSON Schema
برای مطالعه شرایط استفاده و محدودیتهای مسئولیت، صفحه «سلب مسئولیت» را مشاهده کنید.