> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ar/khas-balmjal/08-pgfplots-package.md).

# حزمة Pgfplots

## مقدمة

ال `pgfplots` الحزمة، والتي تستند إلى [`TikZ`](/latex/ar/alashkal-waljdawl/05-tikz-package.md)، هي أداة قوية للتصور ومثالية لإنشاء الرسوم العلمية/التقنية. والفكرة الأساسية هي أنك توفر بيانات/معادلة الإدخال و `pgfplots` تتولى الباقي.

### مقدمة المستند

لاستخدام `pgfplots` حزمة في مستندك، أضف السطر التالي إلى المقدمة:

`\usepackage{pgfplots}`

يمكنك أيضًا ضبط سلوك `pgfplots` في مقدمة المستند. على سبيل المثال، لتغيير حجم كل رسم وضمان التوافق العكسي (موصى به) أضف السطر التالي:

`\pgfplotsset{width=10cm,compat=1.9}`

هذا يغيّر حجم كل `pgfplot` إلى 10 سنتيمترات، وهو حجم كبير جدًا؛ يمكنك استخدام وحدات مختلفة (pt، mm، in). إنّ المعامل *compat* مُخصّص ليعمل الكود مع إصدار الحزمة 1.9 أو أحدث.

### وقت التجميع (خلفية موجزة)

عندما تم تصميم/كتابة محرك TeX الأصلي قبل أكثر من 40 عامًا، لم يكن مُصممًا لـ *مباشرة* إنتاج الرسوم — إذ كانت تُنشأ هذه الرسوم كملفات بواسطة برامج خارجية (مثل MetaPost) ثم تُستورد إلى المستند المُنسّق. وقد أتاح ظهور pdfTeX — وهو مبني بشكل وثيق على برنامج TeX الأصلي — إمكانية إنشاء الرسوم *تحرير* باستخدام أوامر لغة TeX الجديدة المدمجة في pdfTeX (وتُسمّى *البدائيات*) والتي يمكنها إخراج معاملات/بيانات PDF المطلوبة لإنتاج الرسوم. وقد أدى إنشاء pdfTeX إلى تطوير حزم رسومات LaTeX متقدمة، مثل `TikZ`, `pgfplots` إلخ، والقادرة على إنتاج رسوم مكتوبة باستخدام أوامر LaTeX عالية المستوى.

ومع ذلك، خلف الكواليس، وفي أعماق محرك pdfTeX (وغيره من المحركات)، تحتاج أوامر رسومات LaTeX عالية المستوى هذه إلى أن تُعالَج عن طريق «تحويلها» مرة أخرى إلى أوامر منخفضة المستوى (بدائية) في محرك pdfTeX والتي تُولِّد فعليًا معاملات PDF المطلوبة لإنتاج الشكل/الأشكال الناتجة. قد يستغرق هذا المعالجة لأوامر LaTeX الرسومية — توسيع البدائيات وتنفيذها — قدرًا غير مهمل من الوقت. وحتى أمر رسومي واحد عالي المستوى في LaTeX، مع بياناته المقابلة، قد يتطلب تنفيذًا متكررًا لـ *الكثير من* أوامر منخفضة المستوى (بدائية) في محرك TeX. ومن منظور المستخدم النهائي، قد تستغرق المستندات التي تحتوي على عدة `pgfplots` أشكال، و/أو رسومات شديدة التعقيد، وقتًا كبيرًا لعرضها (تجميعها).

### تقليل وقت التجميع

لزيادة سرعة تجميع المستند يمكنك ضبط `pgfplots` الحزمة لتصدير الرسوم إلى ملفات PDF منفصلة ثم استيرادها إلى المستند: قم بالتجميع مرة واحدة، ثم أعد استخدام الرسوم. للقيام بذلك، أضف الكود الموضح أدناه إلى المقدمة:

```
\usepgfplotslibrary{external}
\tikzexternalize
```

راجع [مقالة المساعدة هذه](/latex/ar/alaselh-walajwbh/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md) لمزيد من التفاصيل حول كيفية إعداد tikz-externalization في مشروع Overleaf الخاص بك.

## مثال أساسي (مع تخريج الرسوم خارجيًا أيضًا)

```latex
\documentclass{article}
\usepackage[margin=0.25in]{geometry}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.9}

% سنقوم بتخريج الرسوم خارجيًا
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

المثال الأول هو تعابير رياضية ثنائية وثلاثية الأبعاد مرسومة جنبًا إلى جنب.

%هنا يبدأ الرسم ثنائي الأبعاد
\begin{tikzpicture}
\begin{axis}
\addplot[color=red]{exp(x)};
\end{axis}
\end{tikzpicture}
%هنا ينتهي الرسم ثنائي الأبعاد
\hskip 5pt
%هنا يبدأ الرسم ثلاثي الأبعاد
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
{exp(-x^2-y^2)*x};
\end{axis}
\end{tikzpicture}
%هنا ينتهي الرسم ثلاثي الأبعاد

\end{document}
```

[افتح هذا `pgfplots` مثال في Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.25in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%0A%25+We+will+externalize+the+figures%0A%5Cusepgfplotslibrary%7Bexternal%7D%0A%5Ctikzexternalize%0A%0A%5Cbegin%7Bdocument%7D%0A%0AFirst+example+is+2D+and+3D+math+expressions+plotted+side-by-side.%0A%0A%25Here+begins+the+2D+plot%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot%5Bcolor%3Dred%5D%7Bexp%28x%29%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%25Here+ends+the+2D+plot%0A%5Chskip+5pt%0A%25Here+begins+the+3D+plot%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot3%5B%0A++++surf%2C%0A%5D%0A%7Bexp%28-x%5E2-y%5E2%29%2Ax%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%25Here+ends+the+3D+plot%0A%0A%5Cend%7Bdocument%7D)

تُظهر الصورة التالية النتيجة التي ينتجها الكود أعلاه:

![Plgplotsex1OLV2.png](/files/404647a22479c41246029967e92bb58c781fb17d)

### شرح الكود

لأن `pgfplots` يعتمد على `tikz` يجب أن يكون الرسم داخل `tikzpicture` بيئة. ثم سيضبط إعلان البيئة `\begin{axis}`, `\end{axis}` المقياس الصحيح للرسم — راجع [دليل المراجع](#reference-guide) للاطلاع على بيئات محاور أخرى.

لإضافة رسم فعلي، يُستخدم الأمر `\addplot[color=red]{log(x)};` . داخل الأقواس المربعة، `[...]`، يمكن تمرير بعض الخيارات؛ هنا، نضبط `color` الرسم إلى `أحمر`. الأقواس المربعة إلزامية، وإذا لم تُمرَّر أي خيارات فاترك مسافة فارغة بينهما. داخل الأقواس المعقوفة تضع الدالة المراد رسمها. ومن المهم تذكّر أن هذا الأمر يجب أن ينتهي بفاصلة منقوطة (;).

لوضع رسم ثانٍ بجانب الأول، عرّف `tikzpicture` بيئة جديدة. لا تُدخل سطرًا جديدًا، بل فراغًا صغيرًا، في هذه الحالة `\hskip 10pt` سيُدرج فراغًا بعرض 10pt.

بقية الصياغة هي نفسها، باستثناء `\addplot3 [surf,]{exp(-x^2-y^2)*x};`. سيضيف هذا رسمًا ثلاثي الأبعاد، والخيار `surf` داخل الأقواس المربعة يعلن أنه رسم سطحي. يجب وضع الدالة المراد رسمها داخل الأقواس المعقوفة. ومرة أخرى، لا تنسَ وضع فاصلة منقوطة (;) في نهاية الأمر.

**ملاحظة**‎: يُنصح كأفضل ممارسة بترتيب الكود — انظر الرسم الثاني في المثال أعلاه — وإضافة فاصلة (,) في نهاية كل خيار يُمرَّر إلى `\addplot`. وبهذه الطريقة يصبح الكود أكثر قابلية للقراءة وأسهل لإضافة خيارات إضافية عند الحاجة.

## الرسوم ثنائية الأبعاد

`pgfplots`إن قدرات الرسم ثنائي الأبعاد لـ LaTeX واسعة — ويمكنك تخصيص رسومك لتناسب متطلباتك. ومع ذلك، فإن الخيارات الافتراضية تعطي عادةً نتائج جيدة جدًا، لذا كل ما عليك فعله هو إدخال البيانات وسيتولى LaTeX الباقي.

### رسم التعابير الرياضية

إليك مثالًا:

```latex
\begin{tikzpicture}
\begin{axis}[
    axis lines = left,
    xlabel = \(x\),
    ylabel = {\(f(x)\)},
]
%أسفل ذلك يتم تعريف القطع المكافئ الأحمر
\addplot [
    domain=-10:10,
    samples=100,
    color=red,
]
{x^2 - 2*x - 1};
\addlegendentry{\(x^2 - 2x - 1\)}
%هنا يتم تعريف القطع المكافئ الأزرق
\addplot [
    domain=-10:10,
    samples=100,
    color=blue,
    ]
    {x^2 + 2*x + 1};
\addlegendentry{\(x^2 + 2x + 1\)}

\end{axis}
\end{tikzpicture}
```

[افتح هذا `pgfplots` مثال في Overleaf.](https://www.overleaf.com/docs?engine=\&snip_name=pgfplots+example+2\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.25in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++axis+lines+%3D+left%2C%0A++++xlabel+%3D+%5C%28x%5C%29%2C%0A++++ylabel+%3D+%7B%5C%28f%28x%29%5C%29%7D%2C%0A%5D%0A%25Below+the+red+parabola+is+defined%0A%5Caddplot+%5B%0A++++domain%3D-10%3A10%2C+%0A++++samples%3D100%2C+%0A++++color%3Dred%2C%0A%5D%0A%7Bx%5E2+-+2%2Ax+-+1%7D%3B%0A%5Caddlegendentry%7B%5C%28x%5E2+-+2x+-+1%5C%29%7D%0A%25Here+the+blue+parabola+is+defined%0A%5Caddplot+%5B%0A++++domain%3D-10%3A10%2C+%0A++++samples%3D100%2C+%0A++++color%3Dblue%2C%0A++++%5D%0A++++%7Bx%5E2+%2B+2%2Ax+%2B+1%7D%3B%0A%5Caddlegendentry%7B%5C%28x%5E2+%2B+2x+%2B+1%5C%29%7D%0A%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

يُعرض ناتج هذا الكود في الصورة أدناه — تتم إضافة مقدمة مستند LaTeX تلقائيًا عندما تفتح الرابط:

![Plgplotsex2.png](/files/bcebd01eb6dbd4e636671c4a896c979fc3a68f60)

#### شرح الكود

لنحلل الأوامر الجديدة سطرًا بسطر:

**axis lines = left.**

سيضبط هذا المحاور على الجانبين الأيسر والسفلي فقط من الرسم، بدلًا من الصندوق الافتراضي. توجد خيارات تخصيص إضافية في دليل المراجع.

**xlabel = (x) و ylabel = {(f(x))}.**

أسماء معلمات معبرة عن نفسها؛ فهي تتيح لك وضع تسمية على المحور الأفقي والعمودي. لاحظ قيمة ylabel بين الأقواس المعقوفة؛ فهذه الأقواس تُخبر pgfplots بكيفية تجميع النص. وكان يمكن أن يحتوي xlabel أيضًا على أقواس. هذا مفيد للتسميات المعقدة التي قد تربك pgfplots.

**\addplot.**

سيضيف هذا رسمًا إلى المحاور، وقد شُرح الاستخدام العام في المقدمة. وهناك معامِلان جديدان في هذا المثال.

**domain=-10:10.**

يحدد هذا نطاق قيم x.

**samples=100.**

يحدد عدد النقاط في المجال المعرّف بواسطة domain. كلما زادت قيمة samples أصبح الرسم البياني أكثر حدة، لكنه سيستغرق وقتًا أطول في العرض.

**\addlegendentry{(x^2 - 2x - 1)}.**

يضيف هذا وسيلة الإيضاح للتعرّف على الدالة x^2 - 2x - 1.

لإضافة رسم آخر إلى المخطط ما عليك سوى كتابة `\addplot` إدخال جديد.

### الرسم من البيانات

غالبًا ما ينتج عن البحث العلمي بيانات يجب تحليلها. يوضح المثال التالي كيفية رسم البيانات باستخدام *pgfplots*:

```latex
الرسم من البيانات:

\begin{tikzpicture}
\begin{axis}[
    title={Temperature dependence of CuSO\(_4\cdot\)5H\(_2\)O solubility},
    xlabel={Temperature [\textcelsius]},
    ylabel={Solubility [g per 100 g water]},
    xmin=0, xmax=100,
    ymin=0, ymax=120,
    xtick={0,20,40,60,80,100},
    ytick={0,20,40,60,80,100,120},
    legend pos=north west,
    ymajorgrids=true,
    grid style=dashed,
]

\addplot[
    color=blue,
    mark=square,
    ]
    coordinates {
    (0,23.1)(10,27.5)(20,32)(30,37.8)(40,44.6)(60,61.8)(80,83.8)(100,114)
    };
    \legend{CuSO\(_4\cdot\)5H\(_2\)O}

\end{axis}
\end{tikzpicture}
```

[افتح هذا `pgfplots` مثال في Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+example+3\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Btextcomp%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0APlotting+from+data%3A%0A%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++title%3D%7BTemperature+dependence+of+CuSO%5C%28_4%5Ccdot%5C%295H%5C%28_2%5C%29O+solubility%7D%2C%0A++++xlabel%3D%7BTemperature+%5B%5Ctextcelsius%5D%7D%2C%0A++++ylabel%3D%7BSolubility+%5Bg+per+100+g+water%5D%7D%2C%0A++++xmin%3D0%2C+xmax%3D100%2C%0A++++ymin%3D0%2C+ymax%3D120%2C%0A++++xtick%3D%7B0%2C20%2C40%2C60%2C80%2C100%7D%2C%0A++++ytick%3D%7B0%2C20%2C40%2C60%2C80%2C100%2C120%7D%2C%0A++++legend+pos%3Dnorth+west%2C%0A++++ymajorgrids%3Dtrue%2C%0A++++grid+style%3Ddashed%2C%0A%5D%0A%0A%5Caddplot%5B%0A++++color%3Dblue%2C%0A++++mark%3Dsquare%2C%0A++++%5D%0A++++coordinates+%7B%0A++++%280%2C23.1%29%2810%2C27.5%29%2820%2C32%29%2830%2C37.8%29%2840%2C44.6%29%2860%2C61.8%29%2880%2C83.8%29%28100%2C114%29%0A++++%7D%3B%0A++++%5Clegend%7BCuSO%5C%28_4%5Ccdot%5C%295H%5C%28_2%5C%29O%7D%0A++++%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

يُعرض ناتج هذا الكود في الصورة أدناه — تتم إضافة مقدمة مستند LaTeX تلقائيًا عندما تفتح الرابط:

![Plgplotsex3.png](/files/da02a85ac67d1ed1f9158da8ca476718c73c4749)

#### شرح الكود

هناك بعض الأوامر والمعاملات الجديدة هنا:

**title={Temperature dependence of CuSO(\_4\cdot)5H(\_2)O solubility}.**

وكما قد تتوقع، يعيّن عنوانًا للرسم. سيُعرض العنوان فوق الرسم.

**xmin=0, xmax=100, ymin=0, ymax=120.**

الحدود الدنيا والقصوى لمحوري x و y.

**xtick={0,20,40,60,80,100}, ytick={0,20,40,60,80,100,120}.**

النقاط التي توضع عندها العلامات. إذا كانت فارغة تُضبط علامات التدريج تلقائيًا.

**legend pos=north west.**

موضع صندوق وسيلة الإيضاح. راجع دليل المراجع لمزيد من الخيارات.

**ymajorgrids=true.**

يُفعّل/يُعطّل هذا خطوط الشبكة عند مواضع التدريج على محور y. استخدم xmajorgrids لتفعيل خطوط الشبكة على محور x.

**grid style=dashed.**

واضح من اسمه. لعرض خطوط شبكة متقطعة.

**mark=square.**

يرسم هذا علامة مربعة عند كل نقطة في مصفوفة الإحداثيات. وسيُوصَل كلّ معلمٍ بالذي يليه بخط مستقيم.

**coordinates {(0,23.1)(10,27.5)(20,32)...}**

إحداثيات النقاط المراد رسمها. هذه هي البيانات التي تريد تحليلها بصريًا.

إذا كانت البيانات في ملف، وهو الحال في معظم الأوقات؛ فبدلًا من الأوامر `\addplot` و `coordinates` يجب أن تستخدم `\addplot table {file_with_the_data.dat}`، وتبقى بقية الخيارات صالحة في هذه البيئة.

### المخططات المبعثرة

تُستخدم المخططات المبعثرة لتمثيل المعلومات باستخدام نوع من العلامات، وتُستخدم عادةً عند حساب الانحدار الإحصائي. في هذا المثال سننشئ مخططًا مبعثرًا باستخدام بيانات موجودة في ملف يسمى `scattered_example.dat`، وتبدو البيانات فيه كالتالي:

```
GPA  ma  ve  co   un
3.45 643 589 3.76 3.52
2.78 558 512 2.87 2.91
2.52 583 503 2.54 2.4
3.67 685 602 3.83 3.47
3.24 592 538 3.29 3.47
2.1 562 486 2.64 2.37
...
```

يستخدم مخططنا المبعثر أول عمودين من البيانات:

```latex
\begin{tikzpicture}
\begin{axis}[
    enlargelimits=false,
]
\addplot+[
    only marks,
    scatter,
    mark=halfcircle*,
    mark size=2.9pt]
table[meta=ma]
{scattered_example.dat};
\end{axis}
\end{tikzpicture}
```

![Scattered.png](/files/595966fd8bd320879fef583815840beb040d60db)

[افتح مثال مشروع مخطط مبعثر في Overleaf (يتضمن ملف البيانات `scattered_example.dat`).](https://www.overleaf.com/project/new/template/20099?id=68399290\&templateName=Scatter+plot+example\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

#### شرح الكود

يمكن أيضًا استخدام المعاملات الممررة إلى `axis` و `addplot` البيئات في مخطط بيانات، باستثناء `scatter`. وفيما يلي وصف الكود:

**enlarge limits=false**

سيؤدي هذا إلى تقليص المحاور بحيث تقع النقطة ذات القيمتين العظمى والصغرى على حافة الرسم.

**only marks**

واضح جدًا؛ سيضع علامة على كل نقطة.

**scatter**

عند استخدام scatter تُلوَّن النقاط تبعًا لقيمة، ويُحدَّد اللون بواسطة معامل meta الموضح أدناه.

**mark=halfcircle**\*

نوع العلامة المستخدمة في كل نقطة، راجع دليل المراجع للاطلاع على قائمة القيم الممكنة.

**mark size=2.9pt**

حجم كل علامة، ويمكن استخدام وحدات مختلفة.

**table\[meta=ma]{scattered\_example.dat};**

هنا يخبر الأمر table LaTeX بأن البيانات المراد رسمها موجودة في ملف. ويُمرَّر المعامل meta=ma لاختيار العمود الذي يحدد لون كل نقطة. وداخل الأقواس المعقوفة يوجد اسم ملف البيانات.

### الرسوم البيانية الشريطية

تُستخدم الرسوم البيانية الشريطية (وتُعرف أيضًا بالمخططات الشريطية ورسوم الأعمدة) لعرض البيانات المجمعة، وبخاصة البيانات الإحصائية عن فئة من السكان من نوع ما. الرسوم الشريطية في `pgfplots` قابلة للتهيئة بدرجة كبيرة، ولكننا سنعرض هنا مثالًا بسيطًا:

```latex
\begin{tikzpicture}
\begin{axis}[
	x tick label style={
		 /pgf/number format/1000 sep=},
	ylabel=Year,
	enlargelimits=0.05,
	legend style={at={(0.5,-0.1)},
	anchor=north,legend columns=-1},
	ybar interval=0.7,
]
\addplot
	coordinates {(2012,408184) (2011,408348)
		 (2010,414870) (2009,412156)};
\addplot
	coordinates {(2012,388950) (2011,393007)
		(2010,398449) (2009,395972)};
\legend{Men,Women}
\end{axis}
\end{tikzpicture}
```

[افتح هذا `pgfplots` مثال كود شريط بياني في Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+bar+chart+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Btextcomp%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A%09x+tick+label+style%3D%7B%0A%09%09%2Fpgf%2Fnumber+format%2F1000+sep%3D%7D%2C%0A%09ylabel%3DYear%2C%0A%09enlargelimits%3D0.05%2C%0A%09legend+style%3D%7Bat%3D%7B%280.5%2C-0.1%29%7D%2C%0A%09anchor%3Dnorth%2Clegend+columns%3D-1%7D%2C%0A%09ybar+interval%3D0.7%2C%0A%5D%0A%5Caddplot+%0A%09coordinates+%7B%282012%2C408184%29+%282011%2C408348%29%0A%09%09+%282010%2C414870%29+%282009%2C412156%29%7D%3B%0A%5Caddplot+%0A%09coordinates+%7B%282012%2C388950%29+%282011%2C393007%29+%0A%09%09%282010%2C398449%29+%282009%2C395972%29%7D%3B%0A%5Clegend%7BMen%2CWomen%7D%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

يُعرض ناتج هذا الكود في الصورة أدناه — تتم إضافة مقدمة مستند LaTeX تلقائيًا عندما تفتح الرابط:

![Barchartsexample.png](/files/9d988364924ef688cf342f7901dad13a6d54f502)

#### شرح الكود

يبدأ الشكل مع إعلان[المُفسَّر سابقًا](#introduction)) الخاص بـ `tikzpicture` و `axis` البيئات، لكن `axis` الإعلان يتضمن عددًا من المعاملات الجديدة:

**x tick label style={/pgf/number format/1000 sep=}**

يعرّف هذا الجزء من الكود نمطًا كاملًا للرسم. باستخدام هذا النمط يمكنك تضمين عدة أوامر \addplot داخل بيئة axis هذه، وستتناسب وتبدو جميلة معًا دون أي تعديلات إضافية (معامل ybar الموضح أدناه إلزامي ليعمل هذا).

**enlargelimits=0.05.**

إن توسيع الحدود في الرسم الشريطي ضروري لأن هذا النوع من الرسوم غالبًا ما يتطلب مساحة إضافية فوق الشريط ليبدو أفضل و/أو لإضافة تسمية. والعدد 0.05 نسبي إلى الارتفاع الكلي للرسم.

**legend style={at={(0.5,-0.2)}, anchor=north,legend columns=-1}**

مرة أخرى، سيعمل هذا بشكل جيد في معظم الأحيان. وإن لزم الأمر، غيّر قيمة -0.2 لوضع وسيلة الإيضاح أقرب/أبعد عن محور x.

**ybar interval=0.7,**

سماكة كل شريط. القيمة 1 تعني أن الأشرطة ستكون متجاورة بلا فراغات، والقيمة 0 تعني عدم وجود أشرطة بل مجرد خطوط عمودية.

ال `coordinates` في هذا النوع من الرسم يحدد نقطة الأساس للشريط وارتفاعه.

ستظهر التسميات على محور y حتى 4 أرقام. إذا كانت الأرقام التي تعمل بها أكبر من 9999 `pgfplots` فستستخدم التدوين نفسه كما في المثال.

## الرسوم ثلاثية الأبعاد

`pgfplots` تمتلك إمكانات الرسم ثلاثي الأبعاد التي قد تتوقعها في برنامج للرسم البياني.

### رسم التعابير الرياضية

هناك مثال بسيط عن هذا في [المقدمة](#introduction)، فلنعمل على شيء أكثر تعقيدًا قليلًا:

```latex
\begin{tikzpicture}
\begin{axis}[
    title=Example using the mesh parameter,
    hide axis,
    colormap/cool,
]
\addplot3[
    mesh,
    samples=50,
    domain=-8:8,
]
{sin(deg(sqrt(x^2+y^2)))/sqrt(x^2+y^2)};
\addlegendentry{\(\frac{sin(r)}{r}\)}
\end{axis}
\end{tikzpicture}
```

[افتح هذا `pgfplots` مثال ثلاثي الأبعاد في Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+3D+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++title%3DExample+using+the+mesh+parameter%2C%0A++++hide+axis%2C%0A++++colormap%2Fcool%2C%0A%5D%0A%5Caddplot3%5B%0A++++mesh%2C%0A++++samples%3D50%2C%0A++++domain%3D-8%3A8%2C%0A%5D%0A%7Bsin%28deg%28sqrt%28x%5E2%2By%5E2%29%29%29%2Fsqrt%28x%5E2%2By%5E2%29%7D%3B%0A%5Caddlegendentry%7B%5C%28%5Cfrac%7Bsin%28r%29%7D%7Br%7D%5C%29%7D%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

يُعرض ناتج هذا الكود في الصورة أدناه — تتم إضافة مقدمة مستند LaTeX تلقائيًا عندما تفتح الرابط:

![Pgfplots3dexample.png](/files/5004acfa46f93dcf0c6c5bb590fd4e73d173fe25)

#### شرح الكود

تم شرح معظم الأوامر هنا بالفعل، لكن توجد 3 أشياء جديدة:

**hide axis**

هذا الخيار في بيئة axis يشرح نفسه بنفسه؛ فلن يظهر المحور.

**colormap/cool**

هو نظام الألوان المستخدم في الرسم. راجع دليل المراجع لمزيد من مخططات الألوان.

**mesh**

هذا الخيار واضح أيضًا، راجع أيضًا المعامل surf في المثال التمهيدي.

**ملاحظة**‎: عند العمل مع الدوال المثلثية `pgfplots` تستخدم الدرجات كوحدة افتراضية، وإذا كانت الزاوية بالراديان (كما في هذا المثال) فعليك استخدام `deg` الدالة للتحويل إلى الدرجات.

### مخططات الكونتور

في `pgfplots` من الممكن رسم مخططات كونتور، لكن يجب أن تكون البيانات محسوبة مسبقًا بواسطة برنامج خارجي. لنرَ مثالًا:

```latex
\begin{tikzpicture}
\begin{axis}
[
    title={Contour plot, view from top},
    view={0}{90}
]
\addplot3[
    contour gnuplot={levels={0.8, 0.4, 0.2, -0.2}}
]
{sin(deg(sqrt(x^2+y^2)))/sqrt(x^2+y^2)};
\end{axis}
\end{tikzpicture}
```

[افتح هذا `pgfplots` مثال مخطط كونتور في Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+contour+plot+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5B%0A++++title%3D%7BContour+plot%2C+view+from+top%7D%2C%0A++++view%3D%7B0%7D%7B90%7D%0A%5D%0A%5Caddplot3%5B%0A++++contour+gnuplot%3D%7Blevels%3D%7B0.8%2C+0.4%2C+0.2%2C+-0.2%7D%7D%0A%5D%0A%7Bsin%28deg%28sqrt%28x%5E2%2By%5E2%29%29%29%2Fsqrt%28x%5E2%2By%5E2%29%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cend%7Bdocument%7D)

يُعرض ناتج هذا الكود في الصورة أدناه — تتم إضافة مقدمة مستند LaTeX تلقائيًا عندما تفتح الرابط:

![Contourplotexample.png](/files/029aca22c398a1bd89f6de8b6e139a7c3adfe440)

#### شرح الكود

هذا رسم لبعض خطوط الكنتور للمعادلة نفسها المستخدمة في القسم السابق. تقع قيمة `حقل العنوان` المعامل داخل الأقواس المعقوفة لأنه يحتوي على فاصلة، لذا نستخدم أقواس التجميع لتجنب أي التباس مع المعاملات الأخرى الممررة إلى `\begin{axis}` الإعلان. هناك أمران جديدان:

**view={0}{90}**

هذا يغيّر منظور الرسم. يُمرَّر المعامل إلى بيئة axis، ما يعني أنه يمكن استخدامه في أي نوع آخر من الرسوم ثلاثية الأبعاد. القيمة الأولى هي دوران بدرجات حول محور z؛ أما القيمة الثانية فلتدوير المنظور حول محور x. في هذا المثال، عندما نجمع بين دوران 0° حول محور z ودوران 90° حول محور x نحصل في النهاية على منظور علوي للرسم.

**contour gnuplot={levels={0.8, 0.4, 0.2, -0.2}}**

يفعل هذا السطر أمرين: أولًا، يخبر LaTeX باستخدام البرنامج الخارجي gnuplot لحساب خطوط الكنتور؛ وهذا يعمل جيدًا في Overleaf، لكن إذا أردت استخدام هذا الأمر في تثبيت LaTeX المحلي لديك فعليك تثبيت gnuplot أولًا (وسيعمل matlab أيضًا، وفي هذه الحالة اكتب matlab بدلًا من gnuplot في الأمر). ثانيًا، المعامل الفرعي levels هو قائمة بقيم مستويات الارتفاع التي سيُحسب عندها خطوط الكنتور.

### رسم سطح من البيانات

لرسم مجموعة بيانات على شكل سطح ثلاثي الأبعاد، كل ما نحتاجه هو إحداثيات كل نقطة. قد تكون هذه الإحداثيات مجموعة غير مرتبة أو، في هذه الحالة، مصفوفة:

```latex
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
coordinates {
(0,0,0) (0,1,0) (0,2,0)

(1,0,0) (1,1,0.6) (1,2,0.7)

(2,0,0) (2,1,0.7) (2,2,1.8)
};
\end{axis}
\end{tikzpicture}
```

[افتح هذا `pgfplots` مثال سطح ثلاثي الأبعاد في Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=plotting+a+surface+from+data+with+pgfplots\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot3%5B%0A++++surf%2C%0A%5D+%0Acoordinates+%7B%0A%280%2C0%2C0%29+%280%2C1%2C0%29+%280%2C2%2C0%29%0A%0A%281%2C0%2C0%29+%281%2C1%2C0.6%29+%281%2C2%2C0.7%29%0A%0A%282%2C0%2C0%29+%282%2C1%2C0.7%29+%282%2C2%2C1.8%29%0A%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cend%7Bdocument%7D)

يُعرض ناتج هذا الكود في الصورة أدناه — تتم إضافة مقدمة مستند LaTeX تلقائيًا عندما تفتح الرابط:

![3dsurfacedata.png](/files/b8837737fa160b8cd16a4e3ebd5cd4671a13ccea)

#### شرح البيانات

تُعامَل النقاط الممررة إلى `coordinates` المعامل على أنها موجودة داخل مصفوفة 3 × 3، مع استخدام سطر فارغ كمُفصل لكل صف في المصفوفة.

تنطبق كل الخيارات الخاصة بالرسوم ثلاثية الأبعاد في هذه المقالة على الأسطح المرسومة من البيانات.

### الرسم البارامتري

الصياغة الخاصة بالرسوم البارامترية مختلفة قليلًا. لنرَ مثالًا:

```latex
\begin{tikzpicture}
\begin{axis}
    [
    view={60}{30},
    ]
\addplot3[
    domain=0:5*pi,
    samples = 60,
    samples y=0,
]
({sin(deg(x))},
{cos(deg(x))},
{x});
\end{axis}
\end{tikzpicture}
```

[افتح هذا `pgfplots` مثال رسم بارامتري في Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+parametric+plot+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A++++%5B%0A++++view%3D%7B60%7D%7B30%7D%2C%0A++++%5D%0A%5Caddplot3%5B%0A++++domain%3D0%3A5%2Api%2C%0A++++samples+%3D+60%2C%0A++++samples+y%3D0%2C%0A%5D%0A%28%7Bsin%28deg%28x%29%29%7D%2C%0A%7Bcos%28deg%28x%29%29%7D%2C%0A%7Bx%7D%29%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

يُعرض ناتج هذا الكود في الصورة أدناه — تتم إضافة مقدمة مستند LaTeX تلقائيًا عندما تفتح الرابط:

![Parametricplot.png](/files/27641fcdd2be2f60f71b82bbb788a4afe9e507dd)

#### شرح الكود

لا يوجد سوى أمرين جديدين في هذا المثال: أولًا، `samples y=0` لمنع `pgfplots` من وصل النقطتين الطرفيتين للولب؛ وثانيًا، الطريقة التي تُمرَّر بها الدالة المراد رسمها إلى `addplot3` البيئة. تُجمع كل دالة بارامترية داخل أقواس معقوفة، وتُفصل المعلمات الثلاثة بأقواس مستديرة.

## دليل المراجع

| الأمر/الخيار/البيئة | الوصف                                                                                                   | القيم الممكنة                                                                                                                                                                                                                                                                                                   |
| ------------------- | ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **axis**            | رسوم عادية مع مقياس خطي                                                                                 |                                                                                                                                                                                                                                                                                                                 |
| **semilogxaxis**    | مقياس لوغاريتمي لـ x ومقياس عادي لـ y                                                                   |                                                                                                                                                                                                                                                                                                                 |
| **semilogyaxis**    | مقياس لوغاريتمي لـ y ومقياس عادي لـ x                                                                   |                                                                                                                                                                                                                                                                                                                 |
| **loglogaxis**      | مقياس لوغاريتمي لمحوري x و y                                                                            |                                                                                                                                                                                                                                                                                                                 |
| **axis lines**      | يغيّر طريقة رسم المحاور. الافتراضي هو '*صندوق*                                                          | box, left, middle, center, right, none                                                                                                                                                                                                                                                                          |
| **legend pos**      | موضع صندوق وسيلة الإيضاح                                                                                | south west, south east, north west, north east, outer north east                                                                                                                                                                                                                                                |
| **mark**            | نوع العلامات المستخدمة في رسم البيانات. عند استخدام محرف واحد، يكون مظهره مشابهًا جدًا للعلامة الفعلية. | \*, x , +, \|, o, asterisk, star, 10-pointed star, oplus, oplus\*, otimes, otimes\*, square, square\*, triangle, triangle\*, diamond, halfdiamond\*, halfsquare\*, right\*, left\*, Mercedes star, Mercedes star flipped, halfcircle, halfcircle\*, pentagon, pentagon\*, cubes. (cubes only work on 3d plots). |
| **colormap**        | مخطط الألوان المستخدم في الرسم، ويمكن تخصيصه لكن توجد بعض مخططات ألوان محددة مسبقًا                     | hot, hot2, jet, blackwhite, bluered, cool, greenyellow, redyellow, violet.                                                                                                                                                                                                                                      |

## قراءة إضافية

لمزيد من المعلومات، انظر:

* [استخدام الألوان في LaTeX](/latex/ar/altnsyq/13-using-colors-in-latex.md)
* [حزمة TikZ](/latex/ar/alashkal-waljdawl/05-tikz-package.md)
* [تخريج pgfplots و tikzpictures خارجيًا](/latex/ar/alaselh-walajwbh/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md)
* [إدراج الصور](/latex/ar/mzyd-mn-almwdhwaat/27-inserting-images.md)
* [قوائم الجداول والأشكال](/latex/ar/alashkal-waljdawl/03-lists-of-tables-and-figures.md)
* [تموضع الصور والجداول](/latex/ar/alashkal-waljdawl/02-positioning-images-and-tables.md)
* [رسم المخططات مباشرة في LaTeX](/latex/ar/alashkal-waljdawl/04-picture-environment.md)
* [ال **pgfplots** توثيق الحزمة](http://mirrors.ctan.org/graphics/pgf/contrib/pgfplots/doc/pgfplots.pdf).
* [حزمتا TikZ و PGF: دليل للإصدار 3.0.0](http://mirror.utexas.edu/ctan/graphics/pgf/base/doc/pgfmanual.pdf)
* [أمثلة TikZ و PGF على TeXample.net](http://www.texample.net/tikz/examples/all/)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ar/khas-balmjal/08-pgfplots-package.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
