| Hosted by CoCalc | Download
Kernel: Python 3 (Anaconda 2019)

שרטוט וציור בעזרת החבילה matplotlib

אחד מתפקידי של המדע החישובי הוא ההמחשה. האימרה: ״תמונה אחת שווה אלף מילים״ כאילו נוסחא במיוחד למדע. גרף של תוצאות ניסוי, שרטוט של המערכת הנחקרת, או אנימציה של מערכת הם הטובים ביותר להבנת הבעיה או בחינת תאוריה או אמינות תוכנה. בשיעור זה תשתמשו בחבילה [matplotlib] (https://matplotlib.org) לצורך יצירת גרפים וציורים .
בשלב ראשון נייבא את תת הסיפריה matplotlib.pyplot. תת סיפריה זו בנויה כמו הסיפריה הגרפית של הסביבה החישובית matlab
import matplotlib.pyplot as plt
plt הוא הקיצור המקובל לחבילה matplotlib.pyplot
כדי לשרטט רשימה של נקודות נעביר לפונקציה plot שתי רשימות של נקודות, האחת של שיעורי ה- x והשניה של שיעורי ה- y. כל רשימת מספרים תועבר למחשב כשורת מספרים המופרדים ב- ׳,׳ והתחומים בסוגריים מרובעים לדוגמא [1.5, 2.3 ,3]
import matplotlib.pyplot as plt plt.plot([0, 1, 3],[-1, -1, 2] ,c = 'b', lw =3)
[<matplotlib.lines.Line2D at 0x7f0c001537b8>]
Image in a Jupyter notebook
מילת המפתח c מצינת את צבע הקו ואילו מילת המפתח lw מצינת את עובי הקו. בקישור [](https://matplotlib.org/api/colors_api.html#module-matplotlib.colors) תוכלו למצוא מידע נוסף על הצבעים.
התרשים מוכל באוביקט המכונה figure. לאובייקט זה מספר פונקציות בעזרתם ניתן לשנות את תכונות התמונה. למשל כדי לשנות את גודל התרשים:
plt.figure(figsize = (3,3))# האורך והרוחב של התמונה באינצים plt.plot([0, 3, 3],[-1, -1, 2] ,c = 'b', lw =3)
[<matplotlib.lines.Line2D at 0x7fdf3e873b10>]
Image in a Jupyter notebook

תרגיל 1

צרו תרשים של משולש שווה צלעות שאורך כל צלע שלו הוא 5 יחידות
import matplotlib.pyplot as plt plt.figure(figsize = (7,7)) plt.plot([1, 3.5, 6],[2, 6.33, 2] ,c = 'b', lw =3) plt.plot([1, 6],[2,2] ,c = 'b', lw =3)
[<matplotlib.lines.Line2D at 0x7f034e27df50>]
Image in a Jupyter notebook
דרך יעילה יותר לשרטוט מצולע היא באמצעות הפונקציה Polygon:
import matplotlib.pyplot as plt fig = plt.figure() #יצירת משטח הציור עליו ישורטטו האלמנטים הגרפיים השונים fig.set_dpi(100) # קביעת הרזולוציה של התמונה, מספר הנקודות לאינץ fig.set_size_inches(7,7) # קביעת גודל התמונה באינצים ax = plt.axes(xlim=(-4, 4), ylim=(-4, 4)) #יצירת אוביקט מסוג מערכת צירים patch = plt.Polygon([[-2,-2],[-2,2],[2,2],[2,-2],[-2,-2]] ,lw = 4, ec = 'b', fc = 'y') #יצירת אובייקט מסוג מצולע ax.add_patch(patch) # הוספת המצולע
<matplotlib.patches.Polygon at 0x7fddd24f3748>
Image in a Jupyter notebook

תרגיל 2

שנו בדוגמא את fc ל-'r' כיצד הוא השפיע? על מה משפיע הפרמטר ec?
#ecאחראי על צבע המסגרת #fc אחראי על המילוי

תרגיל 3

צרו תרשים של מגן דוד
import matplotlib.pyplot as plt plt.figure(figsize = (7,7)) plt.plot([1, 3.5, 6,1],[2, 6.33, 2,2] ,c = 'b', lw =3) plt.plot([1, 3.5, 6,1],[4.33,0,4.33,4.33] ,c = 'b', lw =3)
[<matplotlib.lines.Line2D at 0x7fb67c977350>]
Image in a Jupyter notebook

תרגיל 4

צרו תרשים של בית כחול עם גג אדום (אתם יכולים לשרטט קודם את הגג ולאחר מכן את הבית)
import matplotlib.pyplot as plt fig = plt.figure() fig.set_dpi(100) fig.set_size_inches(7,7) ax = plt.axes(xlim=(-4, 4), ylim=(-4, 4)) patch = plt.Polygon([[-2,-2],[-2,2],[2,2],[2,-2],[-2,-2]] ,lw = 4,ec= 'b',fc = 'b') patch2 = plt.Polygon([[-2,2],[2,2],[0,4],[-2,2]] ,ec = 'r', fc= 'r', lw =3) ax.add_patch(patch) ax.add_patch(patch2)
<matplotlib.patches.Polygon at 0x7fddd271d6a0>
Image in a Jupyter notebook
באמצעות המשפט
patch = plt.Circle((5, -5), 0.75, fc='y')
תוכלו ליצור אובייקט מסוג מעגל שרדיוסו 0.75 ומרכזו בנקודה (5,-5) .
fig = plt.figure() #יצירת משטח הציור עליו ישורטטו האלמנטים הגרפיים השונים fig.set_dpi(100) # קביעת הרזולוציה של התמונה, מספר הנקודות לאינץ fig.set_size_inches(5,5) # קביעת גודל התמונה באינצים ax = plt.axes(xlim=(3, 7), ylim=(-7, -3)) #יצירת אוביקט מסוג מערכת צירים patch = plt.Circle((5, -5), 0.75, fc='y') ax.add_patch(patch) # הוספת המצול
<matplotlib.patches.Circle at 0x7fdf3e79cf10>
Image in a Jupyter notebook

תרגיל 5

צרו תרשים של מכונית
fig = plt.figure() fig.set_size_inches(7,7) ax = plt.axes(xlim=(-4, 4), ylim=(-4, 4)) patch = plt.Polygon([[-3,-2],[-3,2],[3,2],[3,-2],[-3,-2]] ,lw = 4, fc = 'b') ax.add_patch(patch) patch = plt.Circle((2, -2), 0.75, fc='y') ax.add_patch(patch) patch = plt.Circle((-2, -2), 0.75, fc='y') ax.add_patch(patch)
<matplotlib.patches.Circle at 0x7fb67ba33d50>
Image in a Jupyter notebook

מראה וחוק ההחזרה

צפו בסרטון שבהמשך
from IPython.display import YouTubeVideo YouTubeVideo("OrRMKbwzgSg")
מיקום של נקודה במישור ניתן על ידי צמד מספרים. מספרים אלו מכונים שיעורי הנקודה. דרך אחת לתת שיעורי נקודה היא במערכת צירים קרטזים. במקרה זה שיעורי הנקודה הם הטליה על ציר ה-x וציר ה-y בהתאמה. דרך אחרת היא שימוש בקוארדינטות פולריות. במקרה זה מיקומה של הנקודה ניתן על ידי צמד מספרים שהם הזווית בין הישר המחבר את הנקודה לראשית וציר ה-x ומרחק הנקודה מהראשית. בסיפריה הגראפית matplolib ניתן לשרטט נקודות באמצעות קאורדינטות פולריות וזאת באמצעות הפונקציה polar:
from math import pi plt.polar([pi/2,0,pi],[5,5,5],lw = 5 ,c ='m' ) plt.polar([-pi/2,0,-pi/3],[5,5,5],lw = 5 ,c ='g' )
[<matplotlib.lines.Line2D at 0x7fb67c2eb610>]
Image in a Jupyter notebook
הזוויות ניתנות ברדיאנים. על הרדיאן תוכלו ללמוד בסרטון שלמטה:
YouTubeVideo("cgPYLJ-s5II")

תרגיל 6

בתרגיל זה אתם נידרשים לבנות קטע תוכנית היוצר על המסך תרשים הממחיש את חוק ההחזרה, כדוגמת זה שלמטה:

reflection

from math import pi plt.polar([pi/4,1.25*pi],[5,5],lw = 5 ,c ='m' ) plt.polar([pi/2,0,pi],[5,0,5],lw = 5 ,c ='g' ) plt.polar([0,0.75*pi],[0,5],lw = 5 ,c ='b' ) #plt.polar([-0.75*pi,-0.5*pi],[1,3],lw = 5 ,c ='y' )
[<matplotlib.lines.Line2D at 0x7fb679925310>]
Image in a Jupyter notebook