1. 程式人生 > >python matplotlib基礎圖形

python matplotlib基礎圖形

安裝:pip install matplotlib
匯入模組:

# 匯入模組
import matplotlib.pyplot as plt
# 處理中文正常顯示
plt.rcParams['font.sans-serif'] = ['SimHei']
# 處理 負號 的正常顯示
plt.rcParams['axes.unicode_minus'] = False

一、圖例、標題和標籤

#規定畫布大小
plt.figure(figsize=(8,4))
#準備2組座標
x =[1,2,3]
y=[5,7,4]
x1=[1,2,3]
y1=[10,14,12]

#畫圖
#label:規定標註
plt.plot(x,y,label='第一條線') plt.plot(x1,y1,label='第二條線') #xlabel\ylabel x軸的標註和y軸的標註 plt.xlabel('x軸') plt.ylabel('y軸') # 整個圖的標題 plt.title('包含圖例、標題與標籤的圖') # legend 圖例 plt.legend() #顯示影象 plt.show()

在這裡插入圖片描述

二、畫各種圖

1.折線圖(plot)

# 準備資料
x = [1,2,3,4,5,6,7,8]
y = [5,2,4,2,1,2,3,1]

# 繪製折線圖
plt.plot(x,y,
label='折線圖') # 繪製x軸 plt.xlabel('x軸') # 繪製y軸 plt.ylabel('y軸') # 標題 plt.title('繪製折線圖') # 使用圖例 plt.legend() # plt.show()

在這裡插入圖片描述

2.柱狀圖、條形圖

柱狀圖:bar
條形圖:hbar

(1)柱狀圖

# 準備一組資料
x = [1,3,5,7,9]
y = [5,4,2,8,6]
plt.bar(x,y,label='柱狀圖-01',color='#CC7777')
# color ='xxx'引數,設定圖示顯示的顏色
# plt.bar(x,y,label='柱狀圖-01',color='y')
plt.bar([2,4,6,8,10],x,label='柱狀圖-02',color='#17a05E') # 顏色取得 得方式:(1)qq截圖 選中顏色後按住ctrl 會顯示為16進位制顏色 #(2)百度 常用十六進位制顏色對照表 #(3)網頁中 右擊檢查 color: plt.xlabel('x軸') plt.ylabel('y軸') plt.legend() plt.show()

在這裡插入圖片描述

2.條形圖

# 準備一組資料
x = [1,3,5,7,9]
y = [5,4,2,8,6]
plt.barh(x,y,label='條形圖-01',color='#CC7777')
# color ='xxx'引數,設定圖示顯示的顏色
# plt.bar(x,y,label='柱狀圖-01',color='y')
plt.barh([2,4,6,8,10],x,label='條形圖-02',color='#17a05E')
# 顏色取得 得方式:(1)qq截圖 選中顏色後按住ctrl 會顯示為16進位制顏色
#(2)百度 常用十六進位制顏色對照表
#(3)網頁中 右擊檢查 color:
plt.xlabel('x軸')
plt.ylabel('y軸')
plt.legend()
plt.show()

在這裡插入圖片描述

3.直方圖(hist)

# 建立一組資料
ages = np.random.randint(18,80,200)
# bins = [10,20,30,40,50,60,70,80],建立一個分割槽
bins = np.arange(1,9)*10
# 畫直方圖
plt.hist(ages,bins,histtype='bar',label='年齡直方圖',rwidth=0.8)
plt.title('200人年齡分佈直方圖')
plt.xlabel('年齡')
plt.ylabel('個數')
plt.legend()
plt.show()

在這裡插入圖片描述

4.餅圖(pie)

# 準備四個資料
slices = [7,2,2,13]
# 給資料起的標籤名
activities = ['eat','sleep','work','play']
# 給圖準備的顏色
cols = ['c','#FFE76E','#CC0001','#3D79AA']
# 準備一塊畫布,畫布規定尺寸為6x6,如果不是正方形的尺寸可能餅圖會是橢圓形的
plt.figure(figsize=(6,6))
plt.pie(
    slices,#資料
    labels=activities,#標籤
    #開始的角度
    startangle=0, # 開始畫的角度
    # 陰影
#     shadow=True,
    #切出來
    explode=(0,0.1,0,0), # 範圍是0-1 ,決定離開程度
    autopct='%1.2f%%', # 顯示值,保留2位小數
    colors=cols #運用顏色
)
plt.title('餅狀圖') #圖形標題
plt.show()

在這裡插入圖片描述

5.散點圖(scatter)

# 準備一組資料
x = [1,2,3,4,5,6,7,8]
y = [5,4,2,6,7,5,1,8]
# 畫散點圖,marker 可以是s,o,*,+,x,v,_,h,d,逗號,.,等等,s是代表點的大小
plt.scatter(x,y,label='散點圖',c='#000000',marker='s',s=280)
plt.xlabel('x')
plt.ylabel('y')
plt.title('散點圖')
plt.legend()
plt.show()

在這裡插入圖片描述

6.堆疊圖(stackplot)

# 隨意建立的一週中每天的時間分配
days= range(1,6)
sleeping =[10,5,11,8,7]
eating = [2,3,3,1,4]
studying =[8,7,2,1,12]
playing =[4,9,8,14,1]
# 上面四行是拿來弄圖例的
plt.plot([],[],c='r',label='sleeping',linewidth=5)
plt.plot([],[],c='y',label='eating',linewidth=5)
plt.plot([],[],c='c',label='studying',linewidth=5)
plt.plot([],[],c='b',label='playing',linewidth=5)
plt.stackplot(days,sleeping,eating,studying,playing,colors=['r','y','c','b'])
plt.title('堆疊圖')
plt.legend()
plt.xlabel('天數')
plt.ylabel('小時數')
plt.show()

在這裡插入圖片描述

7.sin和cos圖

# linspace(start,end,n=50) 在start和end之間均勻得返回n個數字
x = np.linspace(-np.pi, np.pi, 256, endpoint=True) # 在Π和-Π之間取了256個數,endpoint包括端點
C = np.cos(x) # 對上面取的值求cos
S = np.sin(x) # 對上面取得值求sin

#調整座標軸
plt.xlim(x.min()*1.5,x.max()*1.5)
plt.ylim(C.min()*1.5,C.max()*1.5)
# 修改
plt.xticks(
    [-np.pi,-np.pi/2,0,np.pi/2,np.pi],
    [r'$-\pi$','$-\pi/2$','$0$','$\pi/2$','$\pi$']
)
plt.yticks([-1,0,1])
# 通過plt.gca() 獲取Axes物件ax
ax=plt.gca()
# 把右邊和上面設定為不可見
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 把下邊界和左邊界移動到0點
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))



#繪製圖像
plt.plot(x,C,color='b',linewidth=3,label='cos') # 畫cos影象(折線圖)
plt.plot(x,S,'r',lw='3',label='sin') # 畫sin影象
# plt.legend(loc='') 組合 upper lower right left center 來決定圖例的位置
plt.legend(loc='upper left')

# 標註特殊點
t = 2*np.pi/3 
#畫出需要標註的藍色的線
plt.plot([t,t],[0,np.cos(t)],color='blue',linewidth=2.5,linestyle='--')
#畫出需要標註的藍色的點
plt.scatter([t,],[np.cos(t),],50,color='b')
#給藍色的點添加註釋(對應點的數學值)
plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
             xy=(t,np.cos(t)),xycoords='data',
             xytext=(-90,-50),textcoords='offset points',fontsize=16,
             arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
#畫出需要標註的紅色的線
plt.plot([t,t],[0,np.sin(t)],color='r',linewidth=2.5,linestyle='--')
#畫出需要標註的紅色的點
plt.scatter([t,],[np.sin(t),],50,color='r')
#給紅色的點添加註釋(對應點的數學值)
plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
             xy=(t,np.sin(t)),xycoords='data',
             xytext=(+10,+40),textcoords='offset points',fontsize=16,
             arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
for label in ax.get_xticklabels()+ax.get_yticklabels():
    label.set_fontsize(18)
    label.set_bbox(dict(facecolor='w',edgecolor='None',alpha=0.4))
plt.show()

在這裡插入圖片描述