目錄:
基於matplotlib的數據可視化
matplotlib.pyplot基於Python語言的繪圖函數
基本圖形繪製
缺省樣式
# -*- coding:utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp #生成曲線上各點的水平座標 x=np.linspace(-np.pi,np.pi,1000) cos_y=np.cos(x)/2 sin_y=np.sin(x) h_y=x/2 #用直線鏈接曲線上的各點 mp.plot(x,cos_y) mp.plot(x,sin_y) mp.plot(x,h_y) #顯示圖形 mp.show()
設置線型、線寬和顏色
代碼:
# -*- coding: utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp # 生成曲線上各點的水平座標 x = np.linspace(-np.pi, np.pi, 1000) # 根據曲線函數計算其上各點的垂直座標 cos_y = np.cos(x) / 2 sin_y = np.sin(x) # 用直線連接曲線上各點 mp.plot(x, cos_y, linestyle='-', linewidth=1, color='dodgerblue') mp.plot(x, sin_y, linestyle='-', linewidth=1, color='orangered') # 顯示圖形 mp.show()
設置座標範圍
- 設置水平座標範圍:mp.xlim(最小值, 最大值)
- 設置垂直座標範圍:mp.ylim(最小值, 最大值)
代碼:
# -*- coding:utf-8 -*- from __future__ import unicode_literals import matplotlib.pyplot as mp # plotting 測繪 library import numpy as np #生成曲線上各點的水平座標 x=np.linspace(-np.pi,np.pi,2000) #根據曲線函數計算其上各點的垂直座標 cos_y=np.cos(x)/2 sin_y=np.sin(x) #設置座標範圍 mp.xlim(x.min()*1.1,x.max()*1.1) mp.ylim(min(cos_y.min(),sin_y.min())*1.1, max(cos_y.max(),sin_y.max())*1.1) #用直線連接曲線上各點 mp.plot(x,cos_y,linestyle='-',linewidth=1, color='dodgerblue') mp.plot(x,sin_y,linestyle='-',linewidth=1, color='orangered') #顯示圖形 mp.show()
設置座標軸刻度標籤
- mp.xticks(刻度標籤位置, 刻度標籤文本)
- mp.yticks(刻度標籤位置, 刻度標籤文本)
代碼:
# -*- coding:utf-8 -*- from __future__ import unicode_literals import matplotlib.pyplot as mp # plotting 測繪 library import numpy as np #生成曲線上各點的水平座標 x=np.linspace(-np.pi,np.pi,2000) #根據曲線函數計算其上各點的垂直座標 cos_y=np.cos(x)/2 sin_y=np.sin(x) #設置座標範圍 mp.xlim(x.min()*1.1,x.max()*1.1) mp.ylim(min(cos_y.min(),sin_y.min())*1.1, max(cos_y.max(),sin_y.max())*1.1) mp.xticks([-np.pi,-np.pi/2,np.pi/2,np.pi*3/4,np.pi], [r'$-\pi$',r'$-\frac{\pi}{2}$',r'$0$', r'$\frac{\pi}{2}$',r'$\frac{3\pi}{4}$',r'$\pi$']) mp.yticks([-1,-0.5,0.5,1]) #用直線連接曲線上各點 mp.plot(x,cos_y,linestyle='-',linewidth=1, color='dodgerblue') mp.plot(x,sin_y,linestyle='-',linewidth=1, color='orangered') #顯示圖形 mp.show()
將矩形座標軸改成十字座標軸
代碼:
# -*- coding: utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp # 生成曲線上各點的水平座標 x = np.linspace(-np.pi, np.pi, 1000) # 根據曲線函數計算其上各點的垂直座標 cos_y = np.cos(x) / 2 sin_y = np.sin(x) # 設置座標範圍 mp.xlim(x.min() * 1.1, x.max() * 1.1) mp.ylim(min(cos_y.min(), sin_y.min()) * 1.1, max(cos_y.max(), sin_y.max()) * 1.1) # 設置座標軸刻度標籤 mp.xticks([ -np.pi, -np.pi / 2, 0, np.pi / 2, np.pi * 3 / 4, np.pi], [ r'$-\pi$', r'$-\frac{\pi}{2}$', r'$0$', r'$\frac{\pi}{2}$', r'$\frac{3\pi}{4}$', r'$\pi$']) mp.yticks([-1, -0.5, 0.5, 1]) # 將矩形座標軸改成十字座標軸 # 獲取當前座標軸對象 ax = mp.gca() # 將垂直座標刻度置於左邊框 ax.yaxis.set_ticks_position('left') # 將左邊框置於數據座標原點 ax.spines['left'].set_position(('data', 0)) # 將水平座標刻度置於底邊框 ax.xaxis.set_ticks_position('bottom') # 將底邊框置於數據座標原點 ax.spines['bottom'].set_position(('data', 0)) # 將右邊框和頂邊框設置成無色 ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') # 用直線連接曲線上各點 mp.plot(x, cos_y, linestyle='-', linewidth=1, color='dodgerblue') mp.plot(x, sin_y, linestyle='-', linewidth=1, color='orangered') # 顯示圖形 mp.show()
顯示圖例
- mp.plot(…, label=圖例文本)
- mp.legend(loc=圖例位置)
代碼:
# -*- coding: utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp # 生成曲線上各點的水平座標 x = np.linspace(-np.pi, np.pi, 1000) # 根據曲線函數計算其上各點的垂直座標 cos_y = np.cos(x) / 2 sin_y = np.sin(x) # 設置座標範圍 mp.xlim(x.min() * 1.1, x.max() * 1.1) mp.ylim(min(cos_y.min(), sin_y.min()) * 1.1, max(cos_y.max(), sin_y.max()) * 1.1) # 設置座標軸刻度標籤 mp.xticks([ -np.pi, -np.pi / 2, 0, np.pi / 2, np.pi * 3 / 4, np.pi], [ r'$-\pi$', r'$-\frac{\pi}{2}$', r'$0$', r'$\frac{\pi}{2}$', r'$\frac{3\pi}{4}$', r'$\pi$']) mp.yticks([-1, -0.5, 0.5, 1]) # 將矩形座標軸改成十字座標軸 # 獲取當前座標軸對象 ax = mp.gca() # 將垂直座標刻度置於左邊框 ax.yaxis.set_ticks_position('left') # 將左邊框置於數據座標原點 ax.spines['left'].set_position(('data', 0)) # 將水平座標刻度置於底邊框 ax.xaxis.set_ticks_position('bottom') # 將底邊框置於數據座標原點 ax.spines['bottom'].set_position(('data', 0)) # 將右邊框和頂邊框設置成無色 ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') # 用直線連接曲線上各點 mp.plot(x, cos_y, linestyle='-', linewidth=1, color='dodgerblue', label=r'$y=\frac{1}{2}cos(x)$') mp.plot(x, sin_y, linestyle='-', linewidth=1, color='orangered', label=r'$y=sin(x)$') mp.legend(loc='upper left') # 顯示圖形 mp.show()
添加特殊點
- mp.scatter(點集水平座標數組,點集垂直座標數組,…)
代碼:
# -*- coding: utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp # 生成曲線上各點的水平座標 x = np.linspace(-np.pi, np.pi, 1000) # 根據曲線函數計算其上各點的垂直座標 cos_y = np.cos(x) / 2 sin_y = np.sin(x) # 計算特殊點的座標 xo = np.pi * 3 / 4 yo_cos = np.cos(xo) / 2 yo_sin = np.sin(xo) # 設置座標範圍 mp.xlim(x.min() * 1.1, x.max() * 1.1) mp.ylim(min(cos_y.min(), sin_y.min()) * 1.1, max(cos_y.max(), sin_y.max()) * 1.1) # 設置座標軸刻度標籤 mp.xticks([ -np.pi, -np.pi / 2, 0, np.pi / 2, np.pi * 3 / 4, np.pi], [ r'$-\pi$', r'$-\frac{\pi}{2}$', r'$0$', r'$\frac{\pi}{2}$', r'$\frac{3\pi}{4}$', r'$\pi$']) mp.yticks([-1, -0.5, 0.5, 1]) # 將矩形座標軸改成十字座標軸 # 獲取當前座標軸對象 ax = mp.gca() # 將垂直座標刻度置於左邊框 ax.yaxis.set_ticks_position('left') # 將左邊框置於數據座標原點 ax.spines['left'].set_position(('data', 0)) # 將水平座標刻度置於底邊框 ax.xaxis.set_ticks_position('bottom') # 將底邊框置於數據座標原點 ax.spines['bottom'].set_position(('data', 0)) # 將右邊框和頂邊框設置成無色 ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') # 用直線連接曲線上各點 mp.plot(x, cos_y, linestyle='-', linewidth=1, color='dodgerblue', label=r'$y=\frac{1}{2}cos(x)$') mp.plot(x, sin_y, linestyle='-', linewidth=1, color='orangered', label=r'$y=sin(x)$') # 繪製特殊點 mp.plot([xo, xo], [yo_cos, yo_sin], linestyle='--', linewidth=1, color='limegreen') mp.scatter([xo, xo], [yo_cos, yo_sin], s=60, edgecolor='limegreen', facecolor='white', zorder=3) mp.legend(loc='upper left') # 顯示圖形 mp.show()
添加註釋
- mp.annotate(
註釋文本,
xy=目標位置,
xytext=文本位置,
textcoords=座標屬性,
fontsize=字體大小,
arrowprops=箭頭屬性) 代碼:
# -*- coding: utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp # 生成曲線上各點的水平座標 x = np.linspace(-np.pi, np.pi, 1000) # 根據曲線函數計算其上各點的垂直座標 cos_y = np.cos(x) / 2 sin_y = np.sin(x) # 計算特殊點的座標 xo = np.pi * 3 / 4 yo_cos = np.cos(xo) / 2 yo_sin = np.sin(xo) # 設置座標範圍 mp.xlim(x.min() * 1.1, x.max() * 1.1) mp.ylim(min(cos_y.min(), sin_y.min()) * 1.1, max(cos_y.max(), sin_y.max()) * 1.1) # 設置座標軸刻度標籤 mp.xticks([ -np.pi, -np.pi / 2, 0, np.pi / 2, np.pi * 3 / 4, np.pi], [ r'$-\pi$', r'$-\frac{\pi}{2}$', r'$0$', r'$\frac{\pi}{2}$', r'$\frac{3\pi}{4}$', r'$\pi$']) mp.yticks([-1, -0.5, 0.5, 1]) # 將矩形座標軸改成十字座標軸 # 獲取當前座標軸對象 ax = mp.gca() # 將垂直座標刻度置於左邊框 ax.yaxis.set_ticks_position('left') # 將左邊框置於數據座標原點 ax.spines['left'].set_position(('data', 0)) # 將水平座標刻度置於底邊框 ax.xaxis.set_ticks_position('bottom') # 將底邊框置於數據座標原點 ax.spines['bottom'].set_position(('data', 0)) # 將右邊框和頂邊框設置成無色 ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') # 用直線連接曲線上各點 mp.plot(x, cos_y, linestyle='-', linewidth=1, color='dodgerblue', label=r'$y=\frac{1}{2}cos(x)$') mp.plot(x, sin_y, linestyle='-', linewidth=1, color='orangered', label=r'$y=sin(x)$') # 繪製特殊點 mp.plot([xo, xo], [yo_cos, yo_sin], linestyle='--', linewidth=1, color='limegreen') mp.scatter([xo, xo], [yo_cos, yo_sin], s=60, edgecolor='limegreen', facecolor='white', zorder=3) # 添加註釋 mp.annotate( r'$\frac{1}{2}cos(\frac{3\pi}{4})=-\frac{\sqrt{2}}{4}$', xy=(xo, yo_cos), xycoords='data', xytext=(-90, -40), textcoords='offset points', fontsize=14, arrowprops=dict( arrowstyle='->', connectionstyle='arc3, rad=0.2')) mp.annotate( r'$sin(\frac{3\pi}{4})=\frac{\sqrt{2}}{2}$', xy=(xo, yo_sin), xycoords='data', xytext=(20, 20), textcoords='offset points', fontsize=14, arrowprops=dict( arrowstyle='->', connectionstyle='arc3, rad=0.2')) # 顯示圖例 mp.legend(loc='upper left') # 顯示圖形 mp.show()
- mp.annotate(
圖形對象
- 說明:一個圖像對象實際上就可以被看做是一個顯示圖形的窗口,出了缺省創建的圖形窗口以外,也可以通過函數手動創建圖形窗口並設置特殊的屬性。
- 屬性:
- mp.figure(對象名(標題文本), figsize=窗口大小,
dpi=分辨率, facecolor=窗口顏色) - mp.title(標題文本, fontsize=字體大小)
- mp.xlabel(水平軸標籤文本, fontsize=字體大小)
- mp.ylabel(垂直軸標籤文本, fontsize=字體大小)
- mp.tick_params(labelsize=刻度標籤字體大小)
- mp.grid(linestyle=網格線風格)
- 注意如果調用figure()函數時所指定的對象名並不存在,則新建一個圖形窗口,同時將其設置爲當前窗口,如果該對象名已經存在,則不再建新窗口,而只是將其所對應的圖形窗口設置爲當前窗口。調用該函數以後的所有繪圖都在當前窗口中完成。
- mp.figure(對象名(標題文本), figsize=窗口大小,
代碼:
# -*- coding: utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp x = np.linspace(-np.pi, np.pi, 1000) cos_y = np.cos(x) / 2 sin_y = np.sin(x) mp.figure('Figure Object 1', figsize=(8, 6), dpi=60, facecolor='lightgray')#打開窗口,設置分辨率 mp.title('Figure Object 1', fontsize=20)#設置標題 mp.xlabel('x', fontsize=14)#水平標籤文本,fontsize=字體大小 mp.ylabel('y', fontsize=14)#垂直標籤文件,fontsize字體大小 mp.tick_params(labelsize=10)#labelsize=刻度標籤字體大小 mp.grid(linestyle=':')#linestyle=網格線風格 mp.figure('Figure Object 2', figsize=(8, 6), dpi=60, facecolor='lightgray') mp.title('Figure Object 2', fontsize=20) mp.xlabel('x', fontsize=14) mp.ylabel('y', fontsize=14) mp.tick_params(labelsize=10) mp.grid(linestyle=':') mp.figure('Figure Object 1') mp.plot(x, cos_y, color='dodgerblue', label=r'$y=\frac{1}{2}cos(x)$') mp.figure('Figure Object 2') mp.plot(x, sin_y, color='orangered', label=r'$y=sin(x)$') mp.legend() mp.figure('Figure Object 1') mp.legend() mp.show()
子座標圖
- mp.subplot(總行數, 總列數, 圖序號)
代碼:sub1.py、sub2.py、sub3.py
# -*- coding: utf-8 -*- from __future__ import unicode_literals import matplotlib.pyplot as mp mp.figure(facecolor='lightgray') mp.subplot(221) mp.xticks(()) mp.yticks(()) mp.text(0.5, 0.5, '1', ha='center', va='center', size=36, alpha=0.5) mp.subplot(222) mp.xticks(()) mp.yticks(()) mp.text(0.5, 0.5, '2', ha='center', va='center', size=36, alpha=0.5) mp.subplot(223) mp.xticks(()) mp.yticks(()) mp.text(0.5, 0.5, '3', ha='center', va='center', size=36, alpha=0.5) mp.subplot(224) mp.xticks(()) mp.yticks(()) mp.text(0.5, 0.5, '4', ha='center', va='center', size=36, alpha=0.5) mp.tight_layout() mp.show()
# -*- coding: utf-8 -*- from __future__ import unicode_literals import matplotlib.pyplot as mp import matplotlib.gridspec as mg mp.figure(facecolor='lightgray') gs = mg.GridSpec(3, 3) mp.subplot(gs[0, :2]) mp.xticks(()) mp.yticks(()) mp.text(0.5, 0.5, '1', ha='center', va='center', size=36, alpha=0.5) mp.subplot(gs[1:, 0]) mp.xticks(()) mp.yticks(()) mp.text(0.5, 0.5, '2', ha='center', va='center', size=36, alpha=0.5) mp.subplot(gs[2, 1:]) mp.xticks(()) mp.yticks(()) mp.text(0.5, 0.5, '3', ha='center', va='center', size=36, alpha=0.5) mp.subplot(gs[:2, 2]) mp.xticks(()) mp.yticks(()) mp.text(0.5, 0.5, '4', ha='center', va='center', size=36, alpha=0.5) mp.subplot(gs[1, 1]) mp.xticks(()) mp.yticks(()) mp.text(0.5, 0.5, '5', ha='center', va='center', size=36, alpha=0.5) mp.tight_layout() mp.show()
# -*- coding: utf-8 -*- from __future__ import unicode_literals import matplotlib.pyplot as mp mp.figure(facecolor='lightgray') mp.axes([0.03, 0.038, 0.94, 0.924]) mp.xticks(()) mp.yticks(()) mp.text(0.5, 0.5, '1', ha='center', va='center', size=36, alpha=0.5) mp.axes([0.63, 0.076, 0.31, 0.308]) mp.xticks(()) mp.yticks(()) mp.text(0.5, 0.5, '2', ha='center', va='center', size=36, alpha=0.5) mp.show()
設置座標軸刻度定位器
- 怎麼設置:
ax = mp.gca()
ax.xaxis.set_major_locator(刻度定位器對象)
ax.xaxis.set_minor_locator(刻度定位器對象)
ax.yaxis.set_major_locator(刻度定位器對象)
ax.yaxis.set_minor_locator(刻度定位器對象) 代碼:
# -*- coding: utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp mp.figure() locators = [ 'mp.NullLocator()', 'mp.MaxNLocator(nbins=3, steps=[1, 3, 5, 7, 9])', 'mp.FixedLocator(locs=[0, 2.5, 7.5, 10])', 'mp.AutoLocator()', 'mp.IndexLocator(offset=0.5, base=1.5)', 'mp.MultipleLocator()', 'mp.LinearLocator(numticks=21)', 'mp.LogLocator(base=2, subs=[1.0])'] n_locators = len(locators) for i, locator in enumerate(locators): mp.subplot(n_locators, 1, i + 1) mp.xlim(0, 10) mp.ylim(-1, 1) mp.yticks(()) ax = mp.gca() ax.spines['left'].set_color('none') ax.spines['top'].set_color('none') ax.spines['right'].set_color('none') ax.spines['bottom'].set_position(('data', 0)) ax.xaxis.set_major_locator(eval(locator)) ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1)) mp.plot(np.arange(11), np.zeros(11), color='none') mp.text(5, 0.3, locator[3:], ha='center', size=12) mp.tight_layout() mp.show()
- 怎麼設置:
散點圖
- mp.scatter(水平座標數組, 垂直座標數組,
s=大小, c=顏色, cmap=顏色映射, alpha=透明度) 代碼:
# -*- coding: utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp n = 1000 x = np.random.normal(0, 1, n) y = np.random.normal(0, 1, n) d = np.sqrt(x ** 2 + y ** 2) mp.figure('Scatter', facecolor='lightgray') mp.title('Scatter', fontsize=20) mp.xlabel('x', fontsize=14) mp.ylabel('y', fontsize=14) mp.tick_params(labelsize=10) mp.grid(linestyle=':') mp.scatter(x, y, s=6, c=d, cmap='jet_r', alpha=0.5) mp.show()
- mp.scatter(水平座標數組, 垂直座標數組,
填充
- mp.fill_between(掃描線水平座標,
掃描線起點垂直座標, 掃描線終點垂直座標,
color=顏色, alpha=透明度) 代碼:
# -*- coding: utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp n = 1000 x = np.linspace(0, 8 * np.pi, n) sin_y = np.sin(x) cos_y = np.cos(x / 2) / 2 mp.figure('Fill', facecolor='lightgray') mp.title('Fill', fontsize=20) mp.xlabel('x', fontsize=14) mp.ylabel('y', fontsize=14) mp.tick_params(labelsize=10) mp.grid(linestyle=':') mp.plot(x, sin_y, c='dodgerblue', label=r'$y=sin(x)$') mp.plot(x, cos_y, c='orangered', label=r'$y=\frac{1}{2}cos(\frac{x}{2})$') mp.fill_between(x, cos_y, sin_y, cos_y < sin_y, color='dodgerblue', alpha=0.5) mp.fill_between(x, cos_y, sin_y, cos_y > sin_y, color='orangered', alpha=0.5) mp.legend() mp.show()
- mp.fill_between(掃描線水平座標,
條形圖
- mp.bar(矩形條的水平座標, 矩形條的高度
ec=邊框色, fc=填充色, label=圖例標籤) 代碼:bar.py
# -*- coding: utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp n = 12 x = np.arange(n) y1 = np.random.uniform(0.5, 1.0, n) * (1 - x / n) y2 = np.random.uniform(0.5, 1.0, n) * (1 - x / n) mp.figure('Bar', facecolor='lightgray') mp.title('Bar', fontsize=20) mp.xlabel('x', fontsize=14) mp.ylabel('y', fontsize=14) mp.xticks(x, x + 1) mp.ylim(-1.25, 1.25) mp.tick_params(labelsize=10) mp.grid(axis='y', linestyle=':') mp.bar(x, y1, ec='white', fc='dodgerblue', label='Sample 1') for _x, _y in zip(x, y1): mp.text(_x, _y, '%.2f' % _y, ha='center', va='bottom', size=8) mp.bar(x, -y2, ec='white', fc='dodgerblue', alpha=0.5, label='Sample 2') for _x, _y in zip(x, y2): mp.text(_x, -_y - 0.015, '%.2f' % _y, ha='center', va='top', size=8) mp.legend() mp.show()
- mp.bar(矩形條的水平座標, 矩形條的高度
等高線圖
- mp.contour(x, y, z, 密度, colors=顏色,
linewidths=線寬) - mp.contourf(x, y, z, 密度, cmap=顏色映射)
代碼:
# -*- coding: utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp n = 1000 x, y = np.meshgrid(np.linspace(-3, 3, n), np.linspace(-3, 3, n)) z = (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2) mp.figure('Contour', facecolor='lightgray') mp.title('Contour', fontsize=20) mp.xlabel('x', fontsize=14) mp.ylabel('y', fontsize=14) mp.tick_params(labelsize=10) mp.grid(linestyle=':') mp.contourf(x, y, z, 8, cmap='jet') cntr = mp.contour(x, y, z, 8, colors='black', linewidths=0.5) mp.clabel(cntr, inline_spacing=1, fmt='%.1f', fontsize=8) mp.show()
- mp.contour(x, y, z, 密度, colors=顏色,
- 熱力圖
- mp.imshow(深度座標, cmap=顏色映射,
origin=垂直軸向) - 代碼:hot.py
- mp.imshow(深度座標, cmap=顏色映射,
三維曲面/線框圖
- 怎麼做
from mpl_toolkits.mplot3d import axes3d
ax=mp.gca(projection=’3d’)
ax.plot_surface(x, y, z, rstride=垂直步長,
cstride=水平步長, cmap=顏色映射)
ax.plot_wireframe(x, y, z, rstride=垂直步長,
cstride=水平步長, color=顏色,
linewidth=線寬) 代碼:
# -*- coding: utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp from mpl_toolkits.mplot3d import axes3d n = 1000 x, y = np.meshgrid(np.linspace(-3, 3, n), np.linspace(-3, 3, n)) z = (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2) mp.figure('3D Surface') ax = mp.gca(projection='3d') mp.title('3D Surface', fontsize=20) ax.set_xlabel('x', fontsize=14) ax.set_ylabel('y', fontsize=14) ax.set_zlabel('z', fontsize=14) mp.tick_params(labelsize=10) ax.plot_surface(x, y, z, rstride=10, cstride=10, cmap='jet') mp.figure('3D Wireframe') ax = mp.gca(projection='3d') mp.title('3D Wireframe', fontsize=20) ax.set_xlabel('x', fontsize=14) ax.set_ylabel('y', fontsize=14) ax.set_zlabel('z', fontsize=14) mp.tick_params(labelsize=10) ax.plot_wireframe(x, y, z, rstride=20, cstride=20, linewidth=0.5, color='orangered') mp.show()
- 怎麼做
餅圖
- mp.pie(值,空,標,色,格)
代碼:pie.py
# -*- coding: utf-8 -*- from __future__ import unicode_literals import matplotlib.pyplot as mp values = [26, 17, 21, 29, 11] spaces = [0.05, 0.01, 0.01, 0.01, 0.01] labels = ['Python', 'JavaScript', 'C++', 'C', 'PHP'] colors = ['dodgerblue', 'orangered', 'limegreen', 'violet', 'gold'] mp.figure('Pie', facecolor='lightgray') mp.title('Pie', fontsize=20) mp.pie(values, spaces, labels, colors, '%d%%', shadow=True, startangle=90) mp.axis('equal') mp.show()
座標格線
- ax = mp.gca()
- ax.grid(which=主次刻度, axis=橫縱軸,
linewidth=線寬, linestyle=線型, color=顏色) 代碼:grid.py
# -*- coding: utf-8 -*- from __future__ import unicode_literals import numpy as np import matplotlib.pyplot as mp x = np.linspace(-5, 5, 1000) y = 8 * np.sinc(x) mp.figure('Grid', facecolor='lightgray') mp.title('Grid', fontsize=20) mp.xlabel('x', fontsize=14) mp.ylabel('y', fontsize=14) ax = mp.gca() ax.xaxis.set_major_locator(mp.MultipleLocator()) ax.xaxis.set_minor_locator(mp.MultipleLocator(.1)) ax.yaxis.set_major_locator(mp.MultipleLocator()) ax.yaxis.set_minor_locator(mp.MultipleLocator(.1)) mp.tick_params(labelsize=10) ax.grid(which='major', axis='both', linewidth=0.75, linestyle='-', color='lightgray') ax.grid(which='minor', axis='both', linewidth=0.25, linestyle='-', color='lightgray') mp.plot(x, y, c='dodgerblue', label=r'$y=8sinc(x)$') mp.legend() mp.show()
- 極座標
- ax = mp.gca(projection=’polar’)
- mp.plot(極角, 極徑, …)