1. 程式人生 > >matplotlib包畫基本的圖

matplotlib包畫基本的圖

div img 不能 print nor posit figure .cn hit

畫直線圖

1.最簡單的用法:

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-3,3,50)  #在(-1,1)範圍內生成50個數,等分的,
y=2*x+1

#一張圖裏畫一條線
plt.figure()    #如果是一張圖裏只有一條線,則使用它與不使用他差別不大,如果是在一張圖裏有2條或多條線,則使用它可以把兩條線放在一個圖裏。
plt.plot(x,y)
plt.show()

技術分享

2.有的時候需要在一張圖裏畫兩條或多條線,這個時候就需要figure()

import matplotlib.pyplot as plt
import numpy as np x=np.linspace(-3,3,50) #在(-1,1) y=2*x+1 y2=x**2 #一張圖裏化兩條或多條線 plt.figure() plt.plot(x,y) plt.plot(x,y2) plt.show()

技術分享

3.當設置坐標軸時,需要設置坐標軸的範圍,單位長度,替換文字

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-3,3,50)  #在(-1,1)範圍內生成50個數,等分的,
y=2*x+1
y2=x**2

#修改圖中的樣式
plt.figure(num=3,figsize=(8,5))
plt.plot(x,y2)
plt.plot(x,y,color=red,linewidth=2.0,linestyle=--) #設置線段的顏色,長度,樣式,註意linestyle的值只能是兩個‘-’,不能是其他數量個#設置坐標軸,設置坐標軸的範圍,長度,替換文字等
plt.xlim(
-1,2) #設置x軸的範圍
plt.ylim(-2,3) #設置y軸的範圍
plt.xlabel("i am x!") #設置x軸的名稱,解釋
plt.ylabel("i am y!") #設置y軸的名稱,解釋
plt.show() #設置坐標軸的刻度的值為指定的值


new_ticks
=np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)
#設置x軸的刻度和對應的名稱
plt.yticks([-2,-1.8,-1,.22,3],[r$really\ bad$,r$bad$,r$normal$,r$good$,r$really\ good$]) #設置y軸刻度和對應的名稱
plt.show()

技術分享

4.設置坐標軸之——設置坐標軸的位置


import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-3,3,50)  #在(-1,1)範圍內生成50個數,等分的,
y=2*x+1
y2=x**2

#修改圖中的樣式
plt.figure(num=3,figsize=(8,5))
#設置坐標軸原點
plt.plot(x,y2)
plt.plot(x,y,color=red,linewidth=2.0,linestyle=--)
plt.xlabel("i am x!")
plt.ylabel("i am y!")
new_ticks=np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,.22,3],[r$really\ bad$,r$bad$,r$normal$,r$good$,r$really\ good$])
ax=plt.gca()
ax.spines[right].set_color(none)
ax.spines[top].set_color(none)

ax.xaxis.set_ticks_position(bottom)   #.xaxis.set_ticks_position設置x坐標刻度數字或名稱的位置:屬性值有top,bottom,both,default,none
ax.spines[bottom].set_position((data,-1))   #設置邊框位置,y=0的位置,即x軸綁定在y=1時的位置上
ax.yaxis.set_ticks_position(left) #.yaxis.set_ticks_position設置x坐標刻度數字或名稱的位置
ax.spines[left].set_position((data,0))  #設置邊框位置,x=0的位置,即y軸綁定在x=0時的位置上
plt.show()

技術分享

5,圖例設置


import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-3,3,50)  #在(-1,1)範圍內生成50個數,等分的,
y=2*x+1
y2=x**2

#修改圖中的樣式
plt.figure(num=3,figsize=(8,5))

#
設置圖例 l1,=plt.plot(x,y2,label=linear line) #label設置label的名字 ,註意l1,和l2,是以逗號結尾的,因為plt.plot返回的是一個列表 l2,=plt.plot(x,y,color=red,linewidth=2.0,linestyle=--,label=square line) #label設置label的名字 plt.legend(handles=[l1,l2],labels=[up,down],loc=best) #將圖例添加到圖中的最佳位置 plt.xlabel("i am x!") plt.ylabel("i am y!") new_ticks=np.linspace(-1,2,5) print(new_ticks) plt.xticks(new_ticks) plt.yticks([-2,-1.8,-1,.22,3],[r$really\ bad$,r$bad$,r$normal$,r$good$,r$really\ good$]) ax=plt.gca() ax.spines[right].set_color(none) ax.spines[top].set_color(none) plt.show()

技術分享

其中loc參數有多種,best表示自動分配最佳位置,其余為

best->0

upper right->1

upper left->2

lower left->3

lower right->4

right->5

center left->6

center right->7

lower center->8

upper center->9

center->10

畫散點圖:

import matplotlib.pyplot as plt
import numpy as np

#data size
n=1024
X=np.random.normal(0,1,n)   #生成1024個數,其中平均數是0,方差是1
Y=np.random.normal(0,1,n)
T=np.arctan2(Y,X)

plt.scatter(X,Y,s=75,c=T,alpha=0.5)#大小是75,顏色是T,透明度是0.5,X,Y作為location
plt.xlim(-1.5,1.5)
plt.xticks(())#隱藏x軸
plt.ylim(-1.5,1.5)
plt.yticks(())  #隱藏y軸
plt.show()

技術分享

畫柱狀圖

import matplotlib.pyplot as plt
import numpy as np

n=12
X=np.arange(n)  #穗姐生成12個數字,x為0-11的整數,Y為相應的均勻分布的隨機數據
Y1=(1-X/float(n)*np.random.uniform(0.5,1.0,n))
Y2=(1-X/float(n)*np.random.uniform(0.5,1.0,n))
plt.bar(X,+Y1,facecolor=#9999ff,edgecolor=white)    #facecolar設置主題顏色,edgecolor設置邊框顏色為白色
plt.bar(X,-Y2,facecolor=#ff9999,edgecolor=white)
plt.xlim(-0.5,n)
plt.xticks(())  #隱藏x軸
plt.ylim(-1.25,1.25)
plt.yticks(())  #隱藏y軸
for x,y in zip(X,Y1):
    plt.text(x+0.4,y+0.05,%.2f %y,ha=center,va=bottom)
for x,y in zip(X,Y2):   #吧X,Y2分別傳到x,y中
    plt.text(x+0.4,-y-0.05,%.2f %-y,ha=center,va=top) #把數據標記在圖上
plt.show()

技術分享

matplotlib包畫基本的圖