Sharedassignments / assignment2 / meeting2_plotting.ipynbOpen in CoCalc
Author: Dvir Hamdi
Views : 43

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

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

תרגיל 1

צרו תרשים של משולש שווה צלעות שאורך כל צלע שלו הוא 5 יחידות
In [32]:
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>]
דרך יעילה יותר לשרטוט מצולע היא באמצעות הפונקציה Polygon:
In [4]:
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 0x7fdf3e81a2d0>

תרגיל 2

שנו בדוגמא את fc ל-'r' כיצד הוא השפיע? על מה משפיע הפרמטר ec?
In [39]:
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>

תרגיל 3

צרו תרשים של מגן דוד
In [57]:
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>]

תרגיל 4

צרו תרשים של בית כחול עם גג אדום (אתם יכולים לשרטט קודם את הגג ולאחר מכן את הבית)
In [8]:
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>
באמצעות המשפט
patch = plt.Circle((5, -5), 0.75, fc='y')
תוכלו ליצור אובייקט מסוג מעגל שרדיוסו 0.75 ומרכזו בנקודה (5,-5) .
In [16]:
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>

תרגיל 5

צרו תרשים של מכונית
In [41]:
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>

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

צפו בסרטון שבהמשך
In [ ]:
from IPython.display import YouTubeVideo YouTubeVideo("OrRMKbwzgSg")
מיקום של נקודה במישור ניתן על ידי צמד מספרים. מספרים אלו מכונים שיעורי הנקודה. דרך אחת לתת שיעורי נקודה היא במערכת צירים קרטזים. במקרה זה שיעורי הנקודה הם הטליה על ציר ה-x וציר ה-y בהתאמה. דרך אחרת היא שימוש בקוארדינטות פולריות. במקרה זה מיקומה של הנקודה ניתן על ידי צמד מספרים שהם הזווית בין הישר המחבר את הנקודה לראשית וציר ה-x ומרחק הנקודה מהראשית. בסיפריה הגראפית matplolib ניתן לשרטט נקודות באמצעות קאורדינטות פולריות וזאת באמצעות הפונקציה polar:
In [67]:
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>]
הזוויות ניתנות ברדיאנים. על הרדיאן תוכלו ללמוד בסרטון שלמטה:
In [5]:
from IPython.display import YouTubeVideo YouTubeVideo("cgPYLJ-s5II")

תרגיל 6

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

reflection

In [7]:
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>]
In [ ]:
In [ ]: