Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Views: 512
Kernel: Python 2 (system-wide)

שרטוט וציור בעזרת החבילה 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, 3, 3],[-1, -1, 2] ,c = 'b', lw =3)
[<matplotlib.lines.Line2D at 0x7f71561e0290>]
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.plot([0,5,2.5,0],[0,0,4.33,0], c = "b" , lw =3)
[<matplotlib.lines.Line2D at 0x7f7155315c10>]
Image in a Jupyter notebook
דרך יעילה יותר לשרטוט מצולע היא באמצעות הפונקציה Polygon:
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) # הוספת המצולע
--------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-2-057f65c17dbf> in <module>() ----> 1 fig = plt.figure() #יצירת משטח הציור עליו ישורטטו האלמנטים הגרפיים השונים 2 fig.set_dpi(100) # קביעת הרזולוציה של התמונה, מספר הנקודות לאינץ 3 fig.set_size_inches(7,7) # קביעת גודל התמונה באינצים 4 5 ax = plt.axes(xlim=(-4, 4), ylim=(-4, 4)) #יצירת אוביקט מסוג מערכת צירים NameError: name 'plt' is not defined

תרגיל 2

שנו בדוגמא את fc ל-'r' כיצד הוא השפיע? על מה משפיע הפרמטר ec?
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 = 'g', fc = 'r') #יצירת אובייקט מסוג מצולע # הפרמטר ec משפיע על צבע המסגרת ax.add_patch(patch) # הוספת המצולע
<matplotlib.patches.Polygon at 0x7f715502d1d0>
Image in a Jupyter notebook

תרגיל 3

צרו תרשים של מגן דוד
import matplotlib.pyplot as plt plt.plot([0,1,0.5,0,0.3,0,1,0.5,0],[0,0,4,0,2.5,2.5,2.5,-1.5,2.5] , c = "b", lw=3)
[<matplotlib.lines.Line2D at 0x7f7154975e90>]
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=(0, 4)) #יצירת אוביקט מסוג מערכת צירים patch = plt.Polygon([[-2,-2],[-2,2],[2,2],[2,-2],[-2,-2]] ,lw = 4, ec = 'b',fc='b')#יצירת אובייקט מסוג מצולע ax.add_patch(patch) #הוספת המצולע patch1 = plt.Polygon([[-2,2],[2,2],[0,3],[-2,2]] ,lw=4 ,ec = "r",fc = "r") ax.add_patch(patch1)
<matplotlib.patches.Polygon at 0x7f4761a10690>
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 0x7f4761768090>
Image in a Jupyter notebook

תרגיל 5

צרו תרשים של מכונית
fig = plt.figure() #יצירת משטח הציור עליו ישורטטו האלמנטים הגרפיים השונים fig.set_dpi(100) # קביעת הרזולוציה של התמונה, מספר הנקודות לאינץ fig.set_size_inches(5,5) # קביעת גודל התמונה באינצים ax = plt.axes(xlim=(1,10), ylim=(1,10)) #יצירת אוביקט מסוג מערכת צירים patch = plt.Circle((3, 3), 0.5, fc='y') ax.add_patch(patch) patch = plt.Circle((6, 3), 0.5, fc='y') ax.add_patch(patch) patch = plt.Polygon([[3,3.5],[6,3.5],[6,4.5],[3,4.5],[3,3.5]] ,lw = 4, ec = 'b',fc='b')#יצירת אובייקט מסוג מצולע ax.add_patch(patch)
<matplotlib.patches.Polygon at 0x7f47605c0110>
Image in a Jupyter notebook

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

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

תרגיל 6

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

reflection

from math import pi import matplotlib.pyplot as plt plt.polar([pi,0,pi/2],[5,0,5],lw = 5 ,c ='m' ) plt.polar([0.75*pi,0,pi/2],[5,0,0],lw = 5 ,c ='g' ) plt.polar([pi/4,0,-0.75*pi],[5,0,5],lw = 5, c ="b")
[<matplotlib.lines.Line2D at 0x7fd0345e1ed0>]
Image in a Jupyter notebook