(九)Python 圖形繪制

前述:Python程序設(shè)計(jì)可以利用多種方法實(shí)現(xiàn)對(duì)圖像和圖像的呈現(xiàn)和處理刽严,在這是利用Python3.x自帶的tkinter Canvas庫(kù)踩娘、turtle庫(kù)以及第三方的Matplotlib庫(kù)進(jìn)行圖形的繪制的常用方法笋敞。

一、tkinter庫(kù)的Canvas 圖形的繪制方法

Canvas是tkinter中的畫布控件,下面展示兩個(gè)表:

  • Canvas 畫布實(shí)例的主要屬性

    屬性 意義
    bg 背景色
    fg 前景色
    bitmap 背景位圖
    image 底紋圖像
    bd 邊框?qū)挘ㄏ袼兀?/td>
    with 寬度(像素)
    height 高度 (像素)
  • Canvas畫布實(shí)例的主要繪圖方法

    方法 功能 主要參數(shù)
    creat_arc() 給弧形和扇形 常用的參數(shù)除兩點(diǎn)位置外,還有start(初始化角度)和 extent(中止角度)戈擒。參數(shù)fill為填充色,outline 為輪廓線色
    creat_image() 繪圖像 用參數(shù)file指向圖像文件艰毒,支持GIF(無(wú)動(dòng)畫)筐高、PNG等格式,不支持JPG格式
    creat_line() 繪直線 兩點(diǎn)坐標(biāo)丑瞧。參數(shù)arrow 為箭頭樣式柑土,默認(rèn)為無(wú),F(xiàn)IRST或LAST分別表示箭頭在首或尾绊汹。參數(shù)dash為表示虛線樣式的元祖型參數(shù)稽屏。例如 dash(4,2) 表示連續(xù)4像素間隔2像素
    create_oval() 繪橢圓 用左上角和右下角兩點(diǎn)的位置定位出矩形內(nèi)切橢圓
    create_polygon() 繪多邊形 頂點(diǎn)位置的x和y值作為參數(shù)
    create_rectangle() 繪矩形 用左上角和右下角兩點(diǎn)的位置定位出矩形
    create_text() 文本標(biāo)簽 顯示位置和text(文本內(nèi)容)
    delete() 刪除指定圖形 參數(shù)為指定圖形對(duì)象的名稱,全部刪除為ALL
  • 1.1西乖、Canvas繪圖的基本方法一:創(chuàng)建畫布和填充顏色

    Canvas 畫布的坐標(biāo)原點(diǎn)在左上角狐榔,默認(rèn)單位是像素坛增,x軸向右為正,y軸向下為正荒叼。例如:在320x240的窗體上創(chuàng)建高200像素,寬280像素的畫布典鸡,并填充顏色


    創(chuàng)建畫布和填充顏色
    from tkinter import  *
    root = Tk()
    root.geometry('320x240')
    mycanvas = Canvas(root,bg='green',height=200,width=280)
    mycanvas.pack()
    btn1 = Button(root,text='關(guān)閉',command=root.destroy)
    btn1.pack()
    root.mainloop()
    
  • 1.2被廓、Canvas繪圖的基本方法一:繪制圖形
    在320x240的窗體上創(chuàng)建高200像素,寬300像素的畫布萝玷,鼠標(biāo)點(diǎn)擊畫布嫁乘,依次繪出:從(90,10)到(200,200)點(diǎn)的矩形;從(90,10)到(200,200)點(diǎn)的內(nèi)切橢圓并填充綠色;從(90,10)到(200,200)點(diǎn)的內(nèi)切扇形并填充粉紅色;連接(20,180)、(150,10)和(290,180) 三點(diǎn)形成藍(lán)色框線且無(wú)色填充的三角形球碉;從(10,105)到(290,105)點(diǎn)的紅色直線蜓斧;以(50,10)為起點(diǎn)用RGB"#123456"顏色繪制文本標(biāo)簽“我的畫布”。單擊“清空”按鈕刪除所有圖形睁冬,如下:


    繪制圖形
     from tkinter import *
     root=Tk()
     root.title('繪制圖形')
     root.geometry('320x240')
     def draw(event):
    
          # 畫矩形
          mycnavas.create_rectangle(90,10,200,200)
          # 畫橢圓挎春,填充顏色
          mycnavas.create_oval(90,10,200,200,fill='green')
          # 畫扇形
          mycnavas.create_arc(90,10,200,200,fill='pink')
          # 畫多邊形(三角形),前景為藍(lán)色豆拨,無(wú)填充色
          mycnavas.create_polygon(10,180,145,10,290,180,outline='blue',fill='')
          # 畫直線
          mycnavas.create_line(0,105,300,105,fill='red')
          # 寫文字直奋,顏色為十六進(jìn)制RGB字符串
          mycnavas.create_text(50,10,text='我的畫布',fill='#123456')
    
     def delt():
          mycnavas.delete(ALL)
    
     mycnavas = Canvas(root,width=300,height=200)
     mycnavas.pack()
     mycnavas.bind('<Button-1>',draw)  # 畫布綁定鼠標(biāo)點(diǎn)擊事件
     btnclear=Button(root,text='清空',command=delt)
     btnclear.pack()
     root.mainloop()
    
  • 1.3、Canvas繪圖的基本方法一:呈現(xiàn)位圖圖像

    Canvas畫布支持呈現(xiàn)位圖圖像文件施禾,文件的類型包括:GIF(無(wú)動(dòng)畫)脚线、PNG等格式,但不支持JPG格式弥搞。
    在320x240的窗體上創(chuàng)建畫布邮绿,并呈現(xiàn)/Users/wangchong/Desktop/呵呵.png圖像。效果如下:

    呈現(xiàn)位圖圖像

    from tkinter import *
    root=Tk()
    root.title('呈現(xiàn)位圖圖像')
    root.geometry('320x240')
    mycanvas=Canvas(root)
    mycanvas.pack()
    photo=PhotoImage(file='/Users/wangchong/Desktop/呵呵.gif') # 我用的 Mac 電腦攀例,圖片的格式不要錯(cuò)船逮,否則會(huì)報(bào)錯(cuò)的
    mycanvas.create_image(100,100,image=photo)
    root.mainloop()
    
  • 1.4、Canvas繪圖的基本方法一:利用鼠標(biāo)事件繪圖

    利用鼠標(biāo)左鍵移動(dòng)鼠標(biāo)事件粤铭,不斷讀取鼠標(biāo)當(dāng)前的位置傻唾,每次擴(kuò)張1個(gè)像素繪制橢圓點(diǎn),即可在畫布上留下鼠標(biāo)的軌跡承耿。例如:在320x240的窗體上創(chuàng)建畫布冠骄,并以藍(lán)色筆創(chuàng)建鼠標(biāo)畫板。效果如下:


    利用鼠標(biāo)事件繪圖
    from tkinter import *
    root = Tk()
    def move(event):
         x = event.x
         y = event.y
         w.create_oval(x,y,x+1,y+1,fill='blue')
    
    w = Canvas(root,width=320,height=240)
    w.pack()
    w.bind('<B1-Motion>',move)
    root.mainloop()
    

    其中加袋,按住鼠標(biāo)左鍵移動(dòng)的鼠標(biāo)事件<B1-Motion>綁定函數(shù)move(event),當(dāng)按住鼠標(biāo)左鍵移動(dòng)鼠標(biāo)時(shí)凛辣,即觸發(fā)讀取鼠標(biāo)當(dāng)前位置x=event.x,y=event.y,在點(diǎn)(x,y)與點(diǎn)(x+1,y+1)組成的矩形之間留下藍(lán)色橢圓點(diǎn)。

  • 1.5职烧、Canvas畫布上圖型的繪制
    利用鼠標(biāo)左鍵移動(dòng)鼠標(biāo)事件扁誓,不斷讀取鼠標(biāo)當(dāng)前的位置防泵,每次擴(kuò)張1個(gè)像素繪制橢圓點(diǎn),即可在畫布上蝗敢。
    在320x240的窗體上創(chuàng)建畫布捷泞,并以藍(lán)色筆創(chuàng)建鼠標(biāo)畫板。如下:


    Canvas畫布上圖型的繪制(鼠標(biāo)畫板)
     from tkinter import *
     root = Tk()
     def move(event):
              x = event.x
              y = event.y
              w.create_oval(x,y,x+1,y+1,fill='blue')
    
      w = Canvas(root,width=320,height=240)
      w.pack()
      w.bind('<B1-Motion>',move)
      root.mainloop()
    

    其中寿谴,按住鼠標(biāo)左鍵移動(dòng)的鼠標(biāo)事件<B1-Motion>綁定函數(shù) move(event) 锁右,當(dāng)按住鼠標(biāo)左鍵并移動(dòng)鼠標(biāo)時(shí),即觸發(fā)讀取鼠標(biāo)當(dāng)前的位置 x=event.x,y=event.y讶泰,在點(diǎn)(x,y)與點(diǎn)(x+1,y+1)組成的矩形之間留下藍(lán)色的橢圓點(diǎn)咏瑟。

  • 1.6、Canvas畫布上的函數(shù)圖形繪制

    用create_line函數(shù)可以在畫布上繪制直線痪署,而隨著變量的變化码泞,用該方法連續(xù)繪制微直線即可得到函數(shù)的圖形。
    例如:在窗體上創(chuàng)建320x240的畫布狼犯,以畫布中心為原點(diǎn)余寥,用紅色繪制帶箭頭的x和y坐標(biāo)軸,用藍(lán)色筆繪制正玄曲線y=sinx的函數(shù)圖形悯森。其中劈狐,x,y軸的放大倍數(shù)均為倍數(shù)均為40倍,即:x = 40t,t以0.01的步長(zhǎng)在 -π~π范圍內(nèi)變化取值呐馆。效果如下圖:

    Canvas畫布上的函數(shù)圖形繪制

    from tkinter import *
    import math
    root = Tk()
    w = Canvas(root,width=320,height=240)
    w.pack()
    w0 = 160  # 半寬
    h0 = 120  # 半高
    # 畫紅色的坐標(biāo)軸線
    w.create_line(0,120,320,120,fill="red",arrow=LAST)
    w.create_line(160,240,160,0,fill="red",arrow=LAST)
    # 標(biāo)題文字
    w.create_text(w0+50,10,text='y=sin(x)')
    # x軸刻度
    for i in range(-3,4):
           j=I*40
           w.create_line(j+w0,h0,j+w0,h0-5,fill="red")
           w.create_text(j+w0,h0+5,text=str(i))
    # y軸刻度
    for i in range(-2,3):
           j=I*40
           w.create_line(w0,j+h0,w0+5,j+h0,fill="red")
           w.create_text(w0-10,j+h0,text=str(-i))
    # 計(jì)算x
    def x(t):
           x=t*40  # x軸放大40倍
           x+=w0   # 平移x軸
           return x
    # 計(jì)算y
    def y(t):
           y=math.sin(t)*40  # y軸放大40倍
           y-=h0             # 平移y軸
           y=-y              # y軸值反向
           return y
    # 連續(xù)繪制微置線
    t=-math.pi
    while(t<math.pi):
         w.create_line(x(t),y(t),x(t+0.01),y(t+0.01),fill="blue")
         t+=0.01
    root.mainloop()
    

    無(wú)論函數(shù)如何復(fù)雜肥缔,以“分而治之”的計(jì)算思維原則,分別調(diào)用x(t)和y(t)函數(shù)取值繪制微直線汹来,即可最終獲得函數(shù)的圖形续膳。

二、turtle庫(kù)的圖形的繪制方法

turtle也是內(nèi)置庫(kù) Python 圖形繪制庫(kù)收班,其繪制方法更為簡(jiǎn)單坟岔,原理如同控制一只“小龜”以不同的方向和速度進(jìn)行位移而得到其運(yùn)動(dòng)的軌跡。turtle圖形繪制的主要方法如下表:

方法 功能 備注
backward()或bk()或back() 逆箭頭所指方向后退 參數(shù)為位移值
circle() 畫圓 默認(rèn)參數(shù)為半徑摔桦,可添加參數(shù)extent(角度) 畫經(jīng)過這個(gè)角度的弧邻耕;可添加參數(shù)steps(n>=4的整數(shù))畫內(nèi)接n邊形,這兩個(gè)附加參數(shù)不能同時(shí)使用
clear() 清楚所有圖形但不移動(dòng)光標(biāo)箭頭的位置 ---
color() 設(shè)置或返回顏色 以元組形式同時(shí)返回或設(shè)置筆觸和填充顏色
done() 繪圖完畢兄世,結(jié)束進(jìn)程 ---
dot() 畫點(diǎn) 參數(shù)為點(diǎn)的大小,可附加顏色參數(shù)鸥拧,如: dot(20,"blue")
fillcolor() 設(shè)置或返回填充顏色 ---
forward()或fd() 向箭頭所指的方向前進(jìn) 參數(shù)為位移值
goto()或setpos()或setposition() 位移至某點(diǎn) 參數(shù)為坐標(biāo)
hideturtle()或ht() 隱藏光標(biāo)箭頭 ---
home() 返回原點(diǎn) ---
isdown() 返回是否落筆 ---
isvisible() 返回光標(biāo)箭頭顯示狀態(tài) ---
left()或lt() 箭頭方向左轉(zhuǎn) 參數(shù)為角度(不是弧度)
pencolor() 設(shè)置或返回筆觸顏色 ---
pendown()或pd()down() 落筆 ---
pensize()或width() 筆觸粗細(xì) ---
penup()或pu()或up() 抬筆 ---
position()或pos() 返回當(dāng)前位置坐標(biāo) ---
reset() 清楚所有圖形并將光標(biāo)箭頭位置于原點(diǎn) ---
right() 或 rt() 箭頭方向右轉(zhuǎn) 參數(shù)為角度(不是弧度)
setup() 初始畫布窗口大小和位置 ---
setx() 水平位移至x軸坐標(biāo) ---
sety() 垂直位移至 y 軸坐標(biāo) ---
showturtle() 或 st() 顯示光標(biāo)箭頭 ---
speed() 位移速度 ---
towards() 返回當(dāng)前方向與 箭頭方向之間的角度 ---
undo() 撤銷(擦除)最后一步 ---
write() 繪制文本標(biāo)簽 默認(rèn)參數(shù)為文本,可選參數(shù)為move,表示是否為動(dòng)畫(Ture/False)
  • 2.1富弦、turtle繪圖的基本方法

    • 2.1.1、坐標(biāo)位置和方向
      setup()方法用于初始化畫布窗口大小和位置济似,參數(shù)包括畫布窗口寬、畫布窗口高碱屁、窗口在屏幕的水平起始位置和窗口在屏幕的垂直起始位置蛾找。例如:setup(640,480,300,300)表示在桌面屏幕(300,300)位置開始創(chuàng)建640x480大小的畫布窗體打毛。用turtle創(chuàng)建的畫布與Canvas不同,其原點(diǎn)(0俩功,0)在畫布的中心幻枉,坐標(biāo)方向與數(shù)學(xué)定義一致,向右诡蜓,向上為正熬甫。

    • 2.1.2、畫筆 ??
      方法color()用于設(shè)置或返回畫筆的顏色蔓罚。例如: color('red') 將顏色設(shè)為紅色椿肩。也可用fillcolor()設(shè)置或返回填充顏色,或用pencolor()方法設(shè)置或返回筆觸顏色豺谈。方法pensize()或width()用于設(shè)置筆觸的粗細(xì)郑象,例如:pensize(5)設(shè)置筆觸為5像素粗。

    • 2.1.3茬末、畫筆控制與運(yùn)動(dòng)
      方法penup()厂榛、pu()或up()為抬筆,當(dāng)筆觸移動(dòng)時(shí)不留墨跡丽惭;方法penward()击奶、pd()或down()為落筆,當(dāng)筆觸移動(dòng)時(shí)會(huì)留下墨跡责掏。
      畫筆的移動(dòng)方向的方法有:向箭頭所指的方向前進(jìn) forward()正歼、fd()或lt();逆箭頭所指方向后退backward()、bk()或back()拷橘。
      畫筆的原地轉(zhuǎn)角方法有:箭頭方向左轉(zhuǎn)left()或lt();箭頭方向右轉(zhuǎn)right()或rt()局义。
      位移至某點(diǎn)的方法:goto(),setpos()或setposition()喜爷;畫圓的方法:circle();返回原點(diǎn)的方法:home()。
      位移速度方法speed(),其取值返回從慢到快為1~10.注意:取0為最快(無(wú)移動(dòng)過程萄唇,直接顯示目標(biāo)結(jié)果)檩帐。
      繪圖完畢通常用方法done()結(jié)束進(jìn)程。

    • 2.1.4另萤、文字
      輸出文字標(biāo)簽用write()方法湃密,默認(rèn)參數(shù)為輸出文本,可選參數(shù)有:對(duì)齊方式 alihn(left,center,right),font元祖型字體設(shè)置(字體泛源,字號(hào)达箍,字形)铺厨。

    • 例如:從原點(diǎn)出發(fā)至坐標(biāo)點(diǎn)(-100,100)解滓,改為紅色洼裤,沿光標(biāo)指向(默認(rèn)方向?yàn)樗较蛴?前進(jìn)200像素腮鞍,改為藍(lán)色缕减,后退100像素桥狡,以動(dòng)畫模式輸出文字(黑體裹芝,36磅嫂易,斜體)怜械。效果如下:


      turtle繪圖
      from turtle import *
      setup(640,480,300,300)
      reset()
      pensize(5)
      goto(-100,100)
      color('red')
      fd(200)
      color('blue')
      bk(100)
      write('turtle繪圖',move=True,font=('黑體',36,'italic'))
      done()
      
  • 2.2、turtle圖形繪圖

    • 簡(jiǎn)單形狀圖形
      用循環(huán)結(jié)構(gòu)可自動(dòng)重復(fù)繪制步驟得出規(guī)則圖形蹭越。
      例如:以5像素筆觸重復(fù)執(zhí)行“前進(jìn)100像素响鹃,右轉(zhuǎn)60度”的操作工6次买置,繪制紅色正六邊形了忿项;再用circle()方法畫半徑為60像素的紅色圓內(nèi)正接六邊形倦卖;然后抬筆移動(dòng)至(-50,200) 點(diǎn)落筆椿争,重復(fù)執(zhí)行“右轉(zhuǎn)144度秦踪,前進(jìn)400像素”的操作共5次椅邓,繪制五角星景馁。如下效果:

      簡(jiǎn)單形狀圖形

      from turtle import *
      reset()
      pensize(5)
      #畫正六邊形 合住,每步右轉(zhuǎn)60度
      for i in range(6):
             fd(100)
             right(60)
      #用circle方法畫正六邊形(半徑為 60 像素的圓內(nèi)正接六邊形 )
      color('red')
      circle(60,steps=6)
      #抬筆移動(dòng)位置
      up()
      goto(-50,200)
      down()
      
      # 畫五角星透葛,每步右轉(zhuǎn)144度
      for i in range(5):
            right(144)
            fd(400)
      done()
      
三僚害、Matplotlib庫(kù)的圖形的繪制方法

Matplotlib庫(kù)是用于科學(xué)計(jì)算數(shù)據(jù)可視化的常見Python第三方模塊萨蚕。它借鑒了許多Matlab中的函數(shù)岳遥,可以輕松繪制高質(zhì)量的線條圖寒随、直方圖妻往、餅圖讯泣、散點(diǎn)以及誤差線圖等二維圖形好渠,也可以繪制三維圖像拳锚,還可以方便地設(shè)定圖形線條的類型、顏色匾荆、粗細(xì)以及字體的大小等屬性牙丽。

  • 3.1烤芦、環(huán)境安裝與基本方法
    使用 Matplotlib 繪圖构罗,需要先安裝導(dǎo)入 numpy 科學(xué)計(jì)算模塊庫(kù)绰播。如果不想經(jīng)歷繁瑣的下載安裝過程蠢箩,也可使用Anaconda 等集成安裝的方式來(lái)搭建科學(xué)計(jì)算環(huán)境谬泌。通常掌实,二維圖形的繪制是導(dǎo)入 Matplotlib的pyplot函數(shù)來(lái)完成的贱鼻,首先邻悬,導(dǎo)入pyplot子庫(kù)語(yǔ)句:

    import Matplotlib.pyplot as plt
    

    然后用

    plt.figure(figsize=(w,h),dpi=h)
    

    創(chuàng)建一個(gè)繪圖對(duì)象父丰,并設(shè)置對(duì)象的寬度比例w和高度比例h蛾扇。例如:

    plt.figure(figsize=(4,3),dpi=200)
    

    為創(chuàng)建一個(gè)4:3的每英寸200點(diǎn)分別率的繪圖對(duì)象镀首,調(diào)用plt.plot()方法在繪圖對(duì)象中進(jìn)行繪圖蘑斧。
    pyplot()方法也可通過調(diào)用 subplot方法增加子圖竖瘾。subplot()方法通常包含三個(gè)參數(shù):共有幾行捕传、幾列庸论、本子圖是第幾個(gè)子視圖聂示。例如,p1=plt.subplot(211)或p1=plt.subplot(2,1,1)表示創(chuàng)建第2行第1列的子視圖鱼喉,p1為第一個(gè)子圖扛禽。
    數(shù)據(jù)可使用列表給出,plot()方法的參數(shù)通常包括x豆巨、y軸兩個(gè)變量及圖形的顏色往扔、線型瓤球、數(shù)據(jù)點(diǎn)標(biāo)記等卦羡。
    常用的顏色字符有:'r'(紅色绿饵,red)拟赊、'g'(綠色吸祟,green)屋匕、'b'(藍(lán)色过吻,blue)蔗衡、'c'(青色绞惦,cyan)济蝉、'm'(品紅,magenta)雷酪、'y'(黃色哥力,yellow)墩弯、'k'(黑色渔工,black)引矩、'w'(白色旺韭,white)等区端。
    常見的線型字符有:'_'(直線)织盼、'_ _'(虛線)沥邻、':'(點(diǎn)線)谋国、'_ .'(點(diǎn)劃線)等芦瘾。
    常用的描點(diǎn)標(biāo)記有: '.'(點(diǎn))近弟、'0'(圓圈)祷愉、's'(方塊)二鳄、'^'(三角形)订讼、'x'(叉)欺殿、'*'(五角星)脖苏、'+'(加號(hào)) 等棍潘。
    例如:

    plt.plot(x,y,'--*r') 表示x和y兩個(gè)變量繪制紅色(r)虛線(--)亦歉,以星號(hào)(*)作為描點(diǎn)標(biāo)記鳍徽。
    

    在同一繪制對(duì)象中可用plot()方法同時(shí)繪制多個(gè)圖形阶祭,例如:

    plt.plot(x,w,'--*t',x,z,'-.+g')  表示在同一繪制對(duì)象中同時(shí)呈現(xiàn)x-w濒募、x-y和x-z三組變量的圖形瑰剃,并且分別以藍(lán)色實(shí)線無(wú)描點(diǎn)晌姚、紅色虛線星描點(diǎn)挥唠、綠色點(diǎn)畫線加號(hào)描點(diǎn)表示宝磨。
     方法plot()可使用label參數(shù)標(biāo)注圖例和公式。標(biāo)注公式時(shí)世囊,字符串以“$”開頭和結(jié)尾株憾,“^{}”表示上標(biāo)号胚,“cdot”表示乘號(hào)(點(diǎn))猫胁,在可能出現(xiàn)歧義的字符串時(shí)用“\”作為轉(zhuǎn)義符號(hào)弃秆。
    

    注意:該字符串是以半角雙引號(hào)界定的菠赚。例如:

    label="Sy=e^(-x) \cdot \cos(2\pi x)$"
    

    可表示數(shù)公式 y=(e-x)cos(2πx)衡查。有l(wèi)abel標(biāo)注時(shí)拌牲,要用繪圖對(duì)象.legend()將其顯示出來(lái)塌忽。
    當(dāng)需要在圖上標(biāo)注文本時(shí)土居,可以使用下列函數(shù)擦耀。
    text(): 在指定坐標(biāo)位置輸出文字
    xlabel(),ylabel():顯示坐標(biāo)軸標(biāo)簽文字埂奈。
    title():顯示標(biāo)題文字
    需要特別指出的是账磺,在Matplotlib 默認(rèn)設(shè)置中沒有對(duì)應(yīng)中文的支持垮抗,如果需要使用中文文本標(biāo)注冒版,應(yīng)在Matplotlib 的字體管理器 font_manger 中專門設(shè)置辞嗡。
    例如:將個(gè)性化字體對(duì)象 myfont設(shè)為華文宋體:

    myfont = Matplotlib.font_manger.FontProperties(fname='C:/windows/Fonts/STSONG.TTF')
    

    并在輸出文字時(shí)续室,使用該字體屬性參數(shù):fontproperties=myfont挺狰。
    由于字體的變化丰泊,有時(shí)輸出負(fù)號(hào)會(huì)影響(顯示不出負(fù)號(hào)瞳购,本例并不涉及)学赛,可預(yù)設(shè)Matplotlib.rcParams['axes.unicode_minus']=False解決罢屈。
    例如:在同一繪圖對(duì)象中缠捌,利用不同顏色和標(biāo)注繪制折線圖性曼月。效果如下:

    import numpy as np
    import Matplotlib
    import Matplotlib.pyplot as plt
    # myfont = Matplotlib.font_manger.FontProperties\(fname='/Users/Fonts/STSONG.TTF')
    matplotlib.rcParams['axes.unicode_minus'] = False
    x=[0,1,2,4,5,6]
    w=[3,2,5,2,3,2]
    y=[1,2,3,2,4,1]
    z=[1,2,3,4,5,6]
    plt.plot(x,w,'b',x,y,'--*r',x,z,'-.+g')
    plt.xlabel("x軸",fontproperties=myfont)
    plt.ylabel("w乙嘀、y虎谢、z軸",fontproperties=myfont)
    plt.title("折線圖",fontsize=20,fontproperties=myfont)
    plt.show
    
  • 3.2婴噩、二維函數(shù)圖形繪制

    二維函數(shù)圖形的繪制可調(diào)用 numpy.linspace()方法几莽,先生成數(shù)據(jù)系列章蚣,再用 plot() 方法繪圖究驴。通式為:

    numpy.linspace(start,stop,num=50,endpoint=True,restep=False)
    

    其中洒忧,參數(shù)依次為自變量起點(diǎn)熙侍、終點(diǎn)蛉抓、生成數(shù)據(jù)點(diǎn)數(shù)巷送、是否包括終點(diǎn)笑跛、是否返回間隔飞蹂。
    例如:在同一繪圖對(duì)象中陈哑,分別以紅色實(shí)線和藍(lán)色點(diǎn)狀線繪出x在-1.7~1.7之間變化的函數(shù)圖形(100個(gè)采樣點(diǎn))惊窖,并標(biāo)注其圖例和對(duì)應(yīng)公式:

    y=3x^3-3x^2+4sin(x)
    y=-3x^3-3x^2+4sin(x)
    

    效果如下:

    import numpy as np
    import Matplotlib.pyplot as plt
    x = np.linspace(-1.7,1.7,100)
    plt.plot(x,2*x**3-3*x**2+4*np.sin(x),"r",label="$y=3x^{3}-3x^{2}+4sin(x)$")
    plt.plot(x,-3*x**3-3*x**2+4*np.sin(x),"b.",label="$y=3x^{3}-3x^{2}+4sin(x)$")
    plt.legend()
    plt.show()
    

    函數(shù)圖形的繪制也可調(diào)用numpy.arange()方法返回?cái)?shù)據(jù)系列爬坑,再用plot()方法繪圖盾计。通式為:

    numpy.arange([start],stop[,step])
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末署辉,一起剝皮案震驚了整個(gè)濱河市哭尝,隨后出現(xiàn)的幾起案子材鹦,更是在濱河造成了極大的恐慌桶唐,老刑警劉巖尤泽,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坯约,死亡現(xiàn)場(chǎng)離奇詭異闹丐,居然都是意外死亡被因,警方通過查閱死者的電腦和手機(jī)氏身,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門航徙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)陷虎,“玉大人,你說我怎么就攤上這事楣富∥坪” “怎么了踪少?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵兼犯,是天一觀的道長(zhǎng)切黔。 經(jīng)常有香客問我具篇,道長(zhǎng)栽连,這世上最難降的妖魔是什么秒紧? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任熔恢,我火速辦了婚禮叙淌,結(jié)果婚禮上闻鉴,老公的妹妹穿的比我還像新娘茂洒。我一直安慰自己,他們只是感情好斤贰,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布荧恍。 她就那樣靜靜地躺著送巡,像睡著了一般雌芽。 火紅的嫁衣襯著肌膚如雪世落。 梳的紋絲不亂的頭發(fā)上屉佳,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音杈帐,去河邊找鬼挑童。 笑死站叼,一個(gè)胖子當(dāng)著我的面吹牛尽楔,可吹牛的內(nèi)容都是我干的阔馋。 我是一名探鬼主播呕寝,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼凡恍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嚼酝!你這毒婦竟也來(lái)了钧舌?” 一聲冷哼從身側(cè)響起涎跨,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤隅很,失蹤者是張志新(化名)和其女友劉穎屋彪,沒想到半個(gè)月后绒尊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體畜挥,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年婴谱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蟹但。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谭羔,死狀恐怖华糖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情口糕,我是刑警寧澤缅阳,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布十办,位于F島的核電站,受9級(jí)特大地震影響再扭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一浪南、第九天 我趴在偏房一處隱蔽的房頂上張望骡送。 院中可真熱鬧到千,春花似錦般眉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)昌腰。三九已至捅伤,卻和暖如春困介,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背根穷。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喷橙,地道東北人疙剑。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓轧简,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容