数据可视化:matplotlib

数据可视化:matplotlib.pyplot (mp)
1.基本绘图函数
mp.plot(水平坐标数组, 垂直坐标数组)
x: [1 2 3 4]
y: [5 6 7 8]
代码:plt1.py
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)
mp.plot(x, sin_y)
mp.show()

mp.plot(…, linestyle=线型, linewidth=线宽,
color=颜色)
代码:plt2.py
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=6,
color=‘dodgerblue’)
mp.plot(x, sin_y, linestyle=’:’, linewidth=0.5,
color=‘orangered’)
mp.show()
mp.xlim(左边界, 右边界)
mp.ylim(底边界, 顶边界)
代码:plt3.py
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(), x.max())
mp.ylim(sin_y.min(), sin_y.max())
mp.plot(x, cos_y, linestyle=’–’, linewidth=6,
color=‘dodgerblue’)
mp.plot(x, sin_y, linestyle=’:’, linewidth=0.5,
color=‘orangered’)
mp.show()
mp.xticks(刻度位置数组, 刻度文本数组)
mp.yticks(刻度位置数组, 刻度文本数组)
代码:plt4.py
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(sin_y.min() * 1.1, 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’ − π 2 -\frac{\pi}{2} 2π’, r’ 0 0 0’,
r’ π 2 \frac{\pi}{2} 2π’, r’ 3 π 4 \frac{3\pi}{4} 43π’,
r’ π \pi π’])
mp.yticks([-1, -0.5, 0.5, 1])
mp.plot(x, cos_y, linestyle=’-’, linewidth=2,
color=‘dodgerblue’)
mp.plot(x, sin_y, linestyle=’-’, linewidth=2,
color=‘orangered’)
mp.show()

ax = mp.gca() # 获取当前坐标轴
ax.spines[‘left’].set_position((‘data’, 0))
ax.spines[‘left’].set_color(颜色)
代码:plt5.py
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(sin_y.min() * 1.1, 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’ − π 2 -\frac{\pi}{2} 2π’, r’ 0 0 0’,
r’ π 2 \frac{\pi}{2} 2π’, r’ 3 π 4 \frac{3\pi}{4} 43π’,
r’ π \pi π’])
mp.yticks([-1, -0.5, 0.5, 1])
ax = mp.gca()
ax.spines[‘left’].set_position((‘data’, 0))
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=2,
color=‘dodgerblue’)
mp.plot(x, sin_y, linestyle=’-’, linewidth=2,
color=‘orangered’)
mp.show()

mp.plot(…, label=图例文本)
mp.legend(loc=‘upper left’)
代码:plt6.py
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(sin_y.min() * 1.1, 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’ − π 2 -\frac{\pi}{2} 2π’, r’ 0 0 0’,
r’ π 2 \frac{\pi}{2} 2π’, r’ 3 π 4 \frac{3\pi}{4} 43π’,
r’ π \pi π’])
mp.yticks([-1, -0.5, 0.5, 1])
ax = mp.gca()
ax.spines[‘left’].set_position((‘data’, 0))
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=2,
color=‘dodgerblue’, label=r’ y = 1 2 c o s ( x ) y=\frac{1}{2}cos(x) y=21cos(x)’)
mp.plot(x, sin_y, linestyle=’-’, linewidth=2,
color=‘orangered’, label=r’ y = s i n ( x ) y=sin(x) y=sin(x)’)
mp.legend(loc=‘upper left’)
mp.show()

mp.scatter(水平坐标数组, 垂直坐标数组,
marker=点型, s=大小, edgecolor=勾边色,
facecolor=填充色, zorder=Z序)
代码:plt7.py
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(sin_y.min() * 1.1, 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’ − π 2 -\frac{\pi}{2} 2π’, r’ 0 0 0’,
r’ π 2 \frac{\pi}{2} 2π’, r’ 3 π 4 \frac{3\pi}{4} 43π’,
r’ π \pi π’])
mp.yticks([-1, -0.5, 0.5, 1])
ax = mp.gca()
ax.spines[‘left’].set_position((‘data’, 0))
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=2,
color=‘dodgerblue’, label=r’ y = 1 2 c o s ( x ) y=\frac{1}{2}cos(x) y=21cos(x)’)
mp.plot(x, sin_y, linestyle=’-’, linewidth=2,
color=‘orangered’, label=r’ y = s i n ( x ) y=sin(x) 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=目标位置, xycoords=目标坐标系,
xytext=文本位置,textcoords=文本坐标系,
fontsize=字体大小,arrowprops=箭头属性)
代码:plt8.py
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(sin_y.min() * 1.1, 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’ − π 2 -\frac{\pi}{2} 2π’, r’ 0 0 0’,
r’ π 2 \frac{\pi}{2} 2π’, r’ 3 π 4 \frac{3\pi}{4} 43π’,
r’ π \pi π’])
mp.yticks([-1, -0.5, 0.5, 1])
ax = mp.gca()
ax.spines[‘left’].set_position((‘data’, 0))
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=2,
color=‘dodgerblue’, label=r’ y = 1 2 c o s ( x ) y=\frac{1}{2}cos(x) y=21cos(x)’)
mp.plot(x, sin_y, linestyle=’-’, linewidth=2,
color=‘orangered’, label=r’ y = s i n ( x ) y=sin(x) 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’ 1 2 c o s ( 3 π 4 ) = − 2 4 \frac{1}{2}cos(\frac{3\pi}{4})=-\frac{\sqrt{2}}{4} 21cos(43π)=42 ’,
xy=(xo, yo_cos), xycoords=‘data’,
xytext=(-90, -40), textcoords=‘offset points’,
fontsize=14, arrowprops=dict(arrowstyle=’->’,
connectionstyle=‘arc3, rad=.2’))
mp.annotate(
r’ s i n ( 3 π 4 ) = 2 2 sin(\frac{3\pi}{4})=\frac{\sqrt{2}}{2} sin(43π)=22 ’,
xy=(xo, yo_sin), xycoords=‘data’,
xytext=(20, 20), textcoords=‘offset points’,
fontsize=14,arrowprops=dict(arrowstyle=’->’,
connectionstyle=‘arc3, rad=.2’))
mp.legend(loc=‘upper left’)
mp.show()

2.图形对象
mp.figure(图形对象名, figsize=窗口大小,
dpi=分辨率, facecolor=颜色)
代码:fig.py
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=(6, 4), dpi=120,
facecolor=‘lightgray’)
mp.title(‘Figure Object 1’, fontsize=16)
mp.xlabel(‘x’, fontsize=12)
mp.ylabel(‘y’, fontsize=12)
mp.tick_params(labelsize=10)
mp.grid(linestyle=’:’)
mp.figure(‘Figure Object 2’, figsize=(6, 4), dpi=120,
facecolor=‘lightgray’)
mp.title(‘Figure Object 2’, fontsize=16)
mp.xlabel(‘x’, fontsize=12)
mp.ylabel(‘y’, fontsize=12)
mp.tick_params(labelsize=10)
mp.grid(linestyle=’:’)
mp.figure(‘Figure Object 1’)
mp.plot(x, cos_y, label=r’ y = 1 2 c o s ( x ) y=\frac{1}{2}cos(x) y=21cos(x)’)
mp.legend()
mp.figure(‘Figure Object 2’)
mp.plot(x, sin_y, label=r’ y = s i n ( x ) y=sin(x) y=sin(x)’)
mp.legend()
mp.show()

3.子图
1)缺省布局
mp.subplot(行数, 列数, 图号)
mp.subplot(2, 3, 1)
mp.subplot(231)
代码:sub1.py
from future import unicode_literals
import matplotlib.pyplot as mp
mp.figure(facecolor=‘lightgray’)
for i in range(2):
for j in range(3):
k = i * 3 + j + 1
mp.subplot(2, 3, k)
mp.xticks(())
mp.yticks(())
mp.text(0.5, 0.5, str(k), ha=‘center’, va=‘center’,
size=36, alpha=0.5)
mp.tight_layout()
mp.show()
2)栅格布局
import matplotlib.gridspec as mg
gs = mg.GridSpec(行数, 列数) # 栅格布局器
mp.subplot(gs[行, 列])
代码:sub2.py
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()

3)自由布局
mp.axes(
[左下角水平坐标, 左下角垂直坐标, 宽度, 高度])
其中所有的尺寸参数都是相对比例。
代码:sub3.py
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()
4.坐标刻度定位器
定位器对象 = mp.xxxLocator(…)
ax = mp.gca()
ax.xaxis.set_major_locator(定位器对象) # 主刻度
ax.xaxis.set_minor_locator(定位器对象) # 次刻度
代码:tick.py
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, 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), c=‘none’)
mp.text(5, 0.3, locator[3:], ha=‘center’, size=12)
mp.tight_layout()
mp.show()
5.散点图
代码:scatter.py
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=60, c=d, cmap=‘jet_r’, alpha=0.5,
marker=‘o’)
mp.show()
6.区域填充
mp.fill_between(水平坐标数组, 垂直坐标起点数组,
垂直坐标终点数组, 条件, color=颜色,
alpha=透明度)
代码:fill.py
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=(6, 4), dpi=120,
facecolor=‘lightgray’)
mp.title(‘Figure Object 1’, fontsize=16)
mp.xlabel(‘x’, fontsize=12)
mp.ylabel(‘y’, fontsize=12)
mp.tick_params(labelsize=10)
mp.grid(linestyle=’:’)
mp.figure(‘Figure Object 2’, figsize=(6, 4), dpi=120,
facecolor=‘lightgray’)
mp.title(‘Figure Object 2’, fontsize=16)
mp.xlabel(‘x’, fontsize=12)
mp.ylabel(‘y’, fontsize=12)
mp.tick_params(labelsize=10)
mp.grid(linestyle=’:’)
mp.figure(‘Figure Object 1’)
mp.plot(x, cos_y, label=r’ y = 1 2 c o s ( x ) y=\frac{1}{2}cos(x) y=21cos(x)’)
mp.legend()
mp.figure(‘Figure Object 2’)
mp.plot(x, sin_y, label=r’ y = s i n ( x ) y=sin(x) y=sin(x)’)
mp.legend()
mp.show()
7.柱状图
mp.bar(水平坐标数组, 高度数组, ec=边缘颜色,
fc=填充颜色, label=标签文本,
alpha=透明度)
代码:bar.py
from future import unicode_literals
import numpy as np
import matplotlib.pyplot as mp
n = 12
x = np.arange(n)
y1 = (1 - x / n) * np.random.uniform(0.5, 1.0, n)
y2 = (1 - x / n) * np.random.uniform(0.5, 1.0, n)
mp.figure(‘Bar’, facecolor=‘lightgray’)
mp.title(‘Bar’, fontsize=20)
mp.ylim(-1.25, 1.25)
mp.xlabel(‘x’, fontsize=14)
mp.ylabel(‘y’, fontsize=14)
mp.xticks(x, x + 1)
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()
8.等高线图
mp.contour(x, y, z, 线数, colors=颜色,
linewidths=线宽)
mp.contourf(x, y, z, 线数, cmap=颜色映射)
代码:cntr.py
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=10)
mp.show()

9.热像图
mp.imshow(矩阵, cmap=颜色映射,
origin=垂直轴方向)
代码:hot.py
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(‘Hot’, facecolor=‘lightgray’)
mp.title(‘Hot’, fontsize=20)
mp.xlabel(‘x’, fontsize=14)
mp.ylabel(‘y’, fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(linestyle=’:’)
mp.imshow(z, cmap=‘jet’, origin=‘low’)
mp.show()

10.饼图
mp.pie(值列表, 间隙列表, 标签, 颜色列表, 格式串,
shadow=是否带阴影, startangle=起始角度)
代码:pie.py
from future import unicode_literals
import matplotlib.pyplot as mp
mp.figure(‘Pie’, facecolor=‘lightgray’)
mp.title(‘Pie’, fontsize=20)
mp.pie(
[26, 17, 21, 29, 11],
[0.05, 0.01, 0.01, 0.01, 0.01],
[‘Python’, ‘JavaScript’, ‘C++’, ‘C’, ‘PHP’],
[‘dodgerblue’, ‘orangered’, ‘limegreen’,
‘violet’, ‘gold’],
‘%d%%’, shadow=True, startangle=90)
mp.axis(‘equal’)
mp.show()

11.三维曲面
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=列距, linewidth=线宽, color=颜色)
代码:wf.py
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 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=30, cstride=30, linewidth=0.5,color=‘orangered’)
mp.show()
代码:sf.py
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=30, cstride=30, cmap=‘jet’)
mp.show()

12.三维散点
ax.scatter(x, y, z, s=大小, c=颜色, marker=点型)
代码:s3.py
from future import unicode_literals
import numpy as np
import matplotlib.pyplot as mp
from mpl_toolkits.mplot3d import axes3d
n = 1000
x = np.random.normal(0, 1, n)
y = np.random.normal(0, 1, n)
z = np.random.normal(0, 1, n)
d = np.sqrt(x ** 2 + y ** 2 + z ** 2)
mp.figure(‘Scatter3D’)
ax = mp.gca(projection=‘3d’)
mp.title(‘Scatter3D’, 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.scatter(x, y, z, s=60, c=d, cmap=‘jet_r’,alpha=0.5, marker=‘o’)
mp.show()
13.极坐标系
mp.gca(projection=‘polar’)
mp.plot …
mp.scatter …
x, y
| |
v v
极角 极径
代码:polar.py
from future import unicode_literals
import numpy as np
import matplotlib.pyplot as mp
t = np.linspace(0, 2 * np.pi, 1001)
r_spiral = 0.8 * t
r_rose = 5 * np.sin(6 * t)
mp.figure(‘Polar’, facecolor=‘lightgray’)
mp.gca(projection=‘polar’)
mp.title(‘Polar’, fontsize=20)
mp.xlabel(r’ θ \theta θ’, fontsize=14)
mp.ylabel(r’ ρ \rho ρ’, fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(linestyle=’:’)
mp.plot(t, r_spiral, c=‘dodgerblue’,
label=r’ ρ = 0.8 θ \rho=0.8\theta ρ=0.8θ’)
mp.plot(t, r_rose, c=‘orangered’,
label=r’ ρ = 5 s i n ( 6 θ ) \rho=5sin(6\theta) ρ=5sin(6θ)’)
mp.legend()
mp.show()
14.半对数坐标
mp.semilogy(…)
代码:log.py
from future import unicode_literals
import numpy as np
import matplotlib.pyplot as mp
y = np.array([1, 10, 100, 1000, 100, 10, 1])
mp.figure(‘Normal & Log’,
facecolor=‘lightgray’)
mp.subplot(211)
mp.title(‘Normal’, fontsize=16)
mp.ylabel(‘y’, fontsize=12)
ax = mp.gca()
ax.xaxis.set_major_locator(
mp.MultipleLocator(1))
ax.xaxis.set_minor_locator(
mp.MultipleLocator(0.1))
ax.yaxis.set_major_locator(
mp.MultipleLocator(250))
ax.yaxis.set_minor_locator(
mp.MultipleLocator(50))
mp.tick_params(labelsize=10)
mp.grid(which=‘major’, axis=‘both’,
linewidth=0.75, linestyle=’-’,
color=‘lightgray’)
mp.grid(which=‘minor’, axis=‘both’,
linewidth=0.25, linestyle=’-’,
color=‘lightgray’)
mp.plot(y, ‘o-’, c=‘dodgerblue’, label=‘plot’)
mp.legend()
mp.subplot(212)
mp.title(‘Log’, fontsize=16)
mp.xlabel(‘x’, fontsize=12)
mp.ylabel(‘y’, fontsize=12)
ax = mp.gca()
ax.xaxis.set_major_locator(
mp.MultipleLocator(1))
ax.xaxis.set_minor_locator(
mp.MultipleLocator(0.1))
mp.tick_params(labelsize=10)
mp.grid(which=‘major’, axis=‘both’,
linewidth=0.75, linestyle=’-’,
color=‘lightgray’)
mp.grid(which=‘minor’, axis=‘both’,
linewidth=0.25, linestyle=’-’,
color=‘lightgray’)
mp.semilogy(y, ‘o-’, c=‘orangered’,
label=‘semilog’)
mp.legend()
mp.tight_layout()
mp.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值