שיעור מס' 3: שרטוט עקומות שרטוט עקומות פקודת plot מקבלת שני מערכים של ערכי ציר x וערכי ציר y, ומשרטטת עקומה שעוברת דרך כל הנקודות ( n x( n y, בהתאמה. צורת השימוש:.plot(x,y) אם מפעילים את הפקודה על מערך אחד בלבד, אז ברירת המחדל היא שהמערך הוא ערכי y ואילו ערכי x הם האינדקסים, כלומר הפקודה משרטטת עקומה שעוברת דרך כל הנקודות ( n.)n,y שרטוט כמה עקומות על מערכת צירים אחת plot(x,y,x,y,...,xn,yn) 5 ציון כל העקומות בפקודה אחת: זוגות x,y אם פקודה אחת משרטטת כמה עקומות, אז כל עקומה מקבלת צבע אחר, לפי סדר ברירת-המחדל. load LDGWsineGW plot(t,water,t,grass,t,deer) 5 5 6 7 8 9 שרטוט עקומות במערכת-צירים אחת ע"י פקודות נפרדות: hold on hold off hold all מעבר ממצב של "פקודת שרטוט חדשה מוחקת גרפים קודמים" למצב של "גרפים מצטברים". חזרה למצב של "מחיקת הקודם". מעבר למצב של "גרפים מצטברים", כאשר עקומות נוספות משורטטות בצבעים שונים. מאפייני העקומה ברירת המחדל לעקומה היא: צבע כחול, קו רציף, ללא סימנים )מרקרים(. מאפייני העקומה מצוינים בפקודה באמצעות ארגומנט נוסף: 'צבע ו/או צורת קו ו/או סימן'. צבע b blue g green r red c cyan m magenta y yellow k black סימנים )markers( צורת קו - solid -- dashed : dotted -. dot-dashed * star s square d diamond. point o circle x x + + > triangle (right) v triangle (down) ^ triangle (up) < triangle (left) p pentagram h hexagram אם מציינים סימן, ברירת המחדל היא שאין קו. אם רוצים סימן וגם קו רציף, יש לציין קו רציף )למרות שזו ברירת המחדל(. עמ' מתוך 7
דוגמא : הסקריפט d3linestyles מציג נתוני לידות מהלמ"ס שנקראו אינטראקטיבית מקובץ births.xls plot(year,jan,'d') סימן בלי קו, צבע ברירת מחדל hold on, plot(year,feb,'--r') מקווקו, צבע אדום plot(year,mar,'.-') סימן עם קו רציף, צבע ברירת מחדל plot(year,apr,'-.ko') סימן עם קו-נקודה, צבע שחור 9 8 7 6 5 97 975 98 985 99 995 5 load LDGWsineGW plot(t,deer,'r') hold on plot(t,grass,'g') 5 גרף פרמטרי בתהליך התלוי במשתנה אחד )למשל: זמן( מודדים כמה משתנים תלויים. ניתן לשרטט את המשתנים התלויים כפונקציה של המשתנה הבלתי-תלוי: )לדוגמא שרטוט מספר האנטילופות וכמות העשב כפונקציה של הזמן(. 5 5 6 7 8 9 plot(grass,deer) בגרף פרמטרי משרטטים משתנה תלוי אחד כפונקציה של משתנה תלוי אחר. )לדוגמא שרטוט מספר האנטילופות כפונקציה של כמות העשב מציג את המחזוריות של התהליך(. 5 37.5 38 38.5 39 39.5.5.5.5 הצגת ערכי שגיאה נניח שיש שגיאה במדידה של כל נתון. אם השגיאה סימטרית )מעל ומתחת לערך המדוד(, אז מספר אחד מייצג את הסטייה מעל ומתחת לערך המדוד. במקרה של שגיאה לא סימטרית, יש לציין לחוד את הסטייה מתחת לערך המדוד עמ' מתוך 7
ואת השגיאה מעל הערך המדוד. השגיאה מצוינת כקו זקוף מעל ומתחת לכל נקודה, באמצעות פקודת.errorbar האופרנדים הם מערכים, כולם באותו אורך. הפקודה משרטטת גם את העקומה וגם את קווי השגיאות. errorbar(y,error) errorbar(x,y,error) האופרנד הראשון הוא ערכי Y והשני הוא השגיאה הסימטרית. שני האופרנדים הראשונים הם,XY השלישי הוא השגיאה הסימטרית. שני האופרנדים הראשונים הם,XY השניים האחרונים הם השגיאות errorbar(x,y,errordown,errorup) מתחת ומעל לנקודה. errorbar(x,y,error,'linespce'). ניתן להוסיף גם מאפייני עקומה )כמתואר למעלה(: דוגמא: נחשב נתונים y=sin(x) ונניח בכולם שגיאה אחידה סימטרית x =.::pi; y=sin(x); e = linspace(,,length(x)); errorbar(x,y,e,'o:k') -.5.5.5 3 3.5 שרטוט מערכים מרוכבים פקודות לשרטוט עקומות מתעלמות מחלקים דמיוניים של ערכים מרוכבים במערכים המשורטטים )ומוציאות הודעת אזהרה(. יש לכך יוצא מן הכלל אחד: plot(roots([ ]),'o:') - אם פקודת plot כוללת רק מערך מספרי אחד, ובמערך זה יש מספרים מרוכבים, אז הפקודה מציגה את הערכים במישור המרוכב, כאשר החלקים הממשיים נלקחים כקואורדינטות x והחלקים הדמיוניים נלקחים כקואורדינטות y. לדוגמא, נציג במישור המרוכב את שורשי הפולינום: - x 5 + - - - - - - - - plot3(x,y,z) שרטוט עקומות במרחב בדומה לעקומות במישור, משרטטים עקומות במרחב ע"י ציון 3 הקואורדינטות + )אופציונלי( צורת-קו. r = 3; v=; t = linspace(,5,5); x = r*cos(*pi*t); y = r*sin(*pi*t); דוגמא : הסקריפט d3helix משרטט סליל ע"י גרף פרמטרי. מעגל במישור ברדיוס r: עמ' 3 מתוך 7
plot3(x,y,v*t) 5 בסליל, תנועה במישור מלווה גם בהתקדמות כלפי מעלה. = v יחס המתיחה, כלומר המרחק האנכי לכל סיבוב במישור. 3 3 - - -3-3 - - 3 title('text') xlabel('text') ylabel('text') text(x,y,'text') text(x,y,'text','p','v','p','v'...vn,pn) אנוטציה כותרת לגרף כותרת לציר x כותרת לציר y טקסט במקום חופשי ציון תכונות טקסט שם התכונה p n הסבר ערכים אפשריים עבור v n שם גופן גודל הגופן )בנקודות( color of letters thickness of letters זווית סיבוב נגד כיוון השעון )מעלות( לפי הקיים במערכת מספר )לפי אפשרויות המערכת( כמו ציון צבעי עקומות 'bold' 'demi' 'light' 'normal' מספר 'FontName' 'FontSize' 'color' 'Fontweight' 'Rotation' אפשר להוסיף תכונות אלה לכל סוגי הטקסט )גם כותרות לצירים ולגרף(. legend('curve','curve',...) legend('curve','curve',...,'location','loc') הוספת מקרא: בחירת מיקום המקרא: אפשרויות עבור :'loc' 'north' 'south' 'eat' 'west' 'northeast' 'northwest' 'southeast' 'southwest' 'northoutside' 'northeastoutside' etc. כיוונים בתוך מערכת הצירים: כיוונים משניים כיוונים מחוץ לצירים: 'Best' legend('hide') legend('show') legend('boxoff') legend('boxon') הבחירה הטובה ביותר )אוטומטית( למזער "התנגשות" עם הנתונים הסתרת מקרא קיים )בלי לבטלו( ביטול הסתרה ביטול מסגרת סביב המקרא החזרת מסגרת סביב המקרא )ברירת מחדל( עמ' מתוך 7
deer population data from ecology files 65 דוגמא 3: סקריפט d3oscilations לשרטוט סימולציה של מערכת אקולוגית. 6 55 5 peaked behavior הסקריפט קורא מידע משלושה קבצים, ובכל אחד מהם משרטט את התלות של אוכלוסיית האנטילופות בזמן. 5 regular LDGWpeaks LDGWsine LDGWsineG 5 6 7 8 9 year מערכות צירים חלונות גרפיים כל הפקודות המשרטטות עקומות ומוסיפות טקסט פועלות על החלון הגרפי הנמצא "למעלה" או "בפוקוס". כל חלון מצוין במספר. פתיחת חלון חדש )והעברת הפוקוס אליו(. תכונות חלון: זוגות של שם תכונה וערך תכונה. figure figure('p','v',...'pn','vn') figure('name','text') figure('numbertitle','off') h = figure close(h) close close all figure(h) clf ציון שם לחלון פתיחת חלון ללא ציון מספר החלון על המסגרת שלו קבלת מס' החלון החדש סגירת חלון מסוים סגירת חלון נוכחי סגירת כל החלונות הגרפיים מעבר לחלון מסוים )יימצא "בפוקוס"( אתחול חלון קיים מערכות צירים על ציור אחד ניתן להגדיר כמה מערכות-צירים בחלון גרפי אחד. כל הפקודות המשרטטות עקומות ומוסיפות טקסט פועלות על מערכת הצירים הנמצאת "בפוקוס". subplot(rows,cols,idx) החלון מחולק ל- rowsxcols מערכות צירים. הפוקוס במערכת צירים מס'.idx 3 הספרור נעשה לפי שורות: 5 6 כדי לשנות פוקוס למערכת צירים אחרת באותו "סידור", יש להפעיל שוב את הפקודה עם אותם מספרים עבור שורות ועמודות אבל מספר שונה עבור האינדקס. הפעלת הפקודה )באותו חלון גרפי( עם מספר שונה של שורות או עמודות מבטלת את ה"סידור" הקיים )ומוחקת גרפים קיימים אם היו(. subplot(rows,cols,]idx idx]) ניתן גם "לאחד" צירים בסידור קיים, אם הם סמוכים: עמ' 5 מתוך 7
האזור הנראה בגרף הפקודות הבאות משאירות מידע גרפי קיים כפי שהוא, אבל משנות את האופן שבו הוא מוצג ל"צופה". axis([xmin,xmax,ymin,ymax]) xlim([xmin xmax]) ylim([ymin ymax]) axis auto axis manual axis tight axis equal grid on grid off x -3.5.3 - -. -3 קביעת האזור במישור קביעת גבולות ציר x קביעת גבולות ציר y חזרה לקביעת אזור אוטומטית "הקפאת" הגבולות במצב הנוכחי )כך שעקומות נוספות לא משנות את הגבולות( קביעת גבולות הצירים לפי ערכי הקיצון של הנתונים. אותן יחידות לציר x ולציר y הוספת קווי אורך ורוחב הורדת קווי אורך ורוחב דוגמא: שרטוט פונקציה בתחום רחב ובתחום מצומצם. x = linspace(,,); y=sin(pi*x).*exp(-x); subplot(,,) plot(x,y), axis tight subplot(,,) plot(x,y) axis([5 -.5.]) -. - - 6 8-5 5 6 7 8 9 בגרף תלת ממדי: zlim([zmin,zmax]) ציר z axis([xmin,xmax,ymin,ymax,zmin,zmax]) גבולות כל הצירים view(az,el) view([ax el]) xlm = xlim קביעת זווית המבט: xy זווית הצופה במישור = azimuth xy זווית הצופה מעל מישור = elevation ללא קלט: קבלת מידע על המצב הנוכחי [az el]=view 8 6 - - - - 5 - - - - דוגמא: הצגת סליל משתי זוויות r=5; v=; subplot(,,) d3helix, axis equal view(-,8) subplot(,,) d3helix, axis equal view(-6,75) עמ' 6 מתוך 7
semilogy(x,y) semilogx(x,y) loglog(x,y) גרפים לוגריתמיים ציר x ליניארי, ציר y לוגריתמי ציר y ליניארי, ציר x לוגריתמי שני הצירים לוגריתמיים דוגמא : הסקריפט d3logplot מדגים כיצד הצגה גרפית מתאימה יכולה לזהות את סוג הפונקציה. linear plot linear exponential power law logarithmic log x plot.5.5 3 log y plot log-log plot - - -.5.5 3 - print print filename device BMP -bit -dbmp EPS black and white -deps JPEG -bit -djpeg PDF Color PDF file -dpdf print mypic -djpeg הדפסה ושמירה לקובץ הדפסת החלון הנוכחי למדפסת ברירת מחדל: שמירה לקובץ דוגמאות לפורמטים גרפיים: ערכים עבור device דוגמא לשמירת קובץ בפורמט :jpeg יווצר קובץ בשם mypic.jpg עמ' 7 מתוך 7