Matplotlib基本API汇总--学习笔记

本文详细汇总了Matplotlib的基本API,包括基本绘图、坐标轴设置、图例、散点图、图形对象如图形窗口、子图和3D图像绘制,以及简单的动画示例,是学习Matplotlib的好帮手。
摘要由CSDN通过智能技术生成

Matplotlib相关API总结

基本功能

1. 基本绘图 (在二维平面坐标系中绘制连续的线)
1. 设置线型、线宽和颜色
2. 设置坐标轴范围
3. 设置坐标刻度
4. 设置坐标轴
5. 图例
6. 特殊点
7. 备注

2. 图形对象(图形窗口)
1. 子图
2. 刻度定位器
3. 刻度网格线
4. 半对数坐标
5. 散点图
6. 填充
7. 条形图
8. 饼图
9. 等高线图
10. 热成像图
11. 极坐标系
12. 三维曲面
13. 简单动画

基本绘图

基本api

import numpy as np
import matplotlib.pyplot as mp

mp.plot(xarray,yarray,linestyle = '',linewidth = 1,color = '',alpha = 0.5,label = '')
mp.vlines(xval,ymin,ymax,)#垂直线 verticallines
mp.hlines(yval,xmin,xmax,)#水平线 horizonlines
mp.show()

坐标轴设置

#修改坐标轴范围
mp.xlim(x_min,x_max)
mp.ylim(y_min,y_max)

#设置坐标轴
ax = mp.gca()

axis_b = ax.spines['bottom']
axis_b.set_position(('data', 0))
axis_l = ax.spines['left']
axis_l.set_position(('data', 0))
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')

图例

mp.plot(xarray,yarray,label = '')
mp.legend(loc = '') # default = 0 = 'best'

散点图(特殊点)

mp.scatter(xarray,yarray,
    marker = '',
    s = '',   # 大小
    edgecolor = '',
    facecolor = '',
    zorder = 3 # 图层显示权重,越大越靠上)

备注

mp.annotate(
    '',        #显示备注的文本内容
    xycoords = 'data'  # 使用坐标系,data为数据坐标系
    xy = (x,y)  # 备注的坐标
    fontsize = 10,
    arrowprops = dict(
        arrowstyle = '', # arrowstyle相关类型百度一下
        connectionstyle = ''
    ) # 定义文本指向目标点的箭头样式
    )

图形对象

图形窗口

mp.figure(
    'title',
    figsize = (4,3),
    dpi = 120,
    facecolor = ''
)
mp.show()

当前窗口参数

mp.title(title,fontsize = 10)
mp.xlabel('x_label',fontsize = 10)
mp.ylabel('y_label',fontsize = 10)

mp.tick_params(...,labelsize = 10,...)
mp.grid(linestyle = '') # 网格
mp.tight_layout()

子图

mp.figure('Subplot Layout',facecolor = 'lightgray')
mp.subplot(2,2,1) # 2 行 2 列的第 1 张图

网格式布局

import numpy as np
import matplotlib.pyplot as mp
import matplotlib.gridspec as mg

mp.figure('Grid Layout', facecolor='lightgray')
gs = mg.GridSpec(3, 3)
mp.subplot(gs[0, :2])
mp.text(0.5, 0.5, 1, size=36, ha='center',
        va='center')
mp.xticks([])
mp.yticks([])

mp.subplot(gs[:2, 2])
mp.text(0.5, 0.5, 2, size=36, ha='center',
        va='center')
mp.xticks([])
mp.yticks([])

mp.subplot(gs[1, 1])
mp.text(0.5, 0.5, 3, size=36, ha='center',
        va='center')
mp.xticks([])
mp.yticks([])

mp.subplot(gs[1:, 0])
mp.text(0.5, 0.5, 4, size=36, ha='center',
        va='center')
mp.xticks([])
mp.yticks([])

mp.subplot(gs[2, 1:])
mp.text(0.5, 0.5, 5, size=36, ha='center',
        va='center')
mp.xticks([])
mp.yticks([])
mp.tight_layout()
mp.show()

刻度定位器

ax = mp.gca() # 获取当前坐标轴
ax.xaxis.set_major_locater(mp.NullLocater()) # 设置水平坐标轴的主刻度定位器
# 设置水平坐标轴的次刻度定位器为多点定位器,间隔0.1
ax.xaxis.set_minor_locater(mp.MultipleLocater(0.1))

示例API:

import numpy as np
import matplotlib.pyplot as mp

locators = ['mp.MultipleLocator(1)',
            'mp.NullLocator()',
            'mp.MaxNLocator(nbins=5)',
            'mp.FixedLocator(locs=[3, 6, 9])']

mp.figure('Locators', facecolor='lightgray')

for i, locator in enumerate(locators):
    mp.subplot(len(locators), 1, i + 1)
    ax = mp.gca()
    # 只留下bottom 轴
    ax.spines['top'].set_color('none')
    ax.spines['left'].set_color('none')
    ax.spines['right'].set_color('none')
    ax.spines['bottom'].set_position(('data', 0.5))
    mp.xlim(1, 10)
    mp.yticks([])
    # 设置主刻度定位器
    ma_loc = eval(locator)
    ax.xaxis.set_major_locator(ma_loc)
    # 设置次刻度定位器
    mi_loc = mp.MultipleLocator(0.1)
    ax.xaxis.set_minor_locator(mi_loc)
mp.show()

刻度网格线

ax = mp.gca()
ax.grid(
    which='',  #'major'/'minor' <-> '主刻度'/'次刻度'
    axis='',  #'x'/'y'/'both' <-> 绘制x或y轴
    linewidth=1, # 线宽
    linestyle='', # 线型
    color='', # 颜色
    alpha=0.5 # 透明度
)

半对数坐标轴

mp.figure('Grid',facecolor = 'gray')
y = [1,10,100,1000,100,10,1]
mp.semilogy(y)
mp.show()

散点图

mp.scatter(x,y,marker ='',s=10,color ='',edgecolor = '',facecolor = '',zorder = '')

# 设置点的颜色
mp.scatter(x,y,c= 'red')
d = (x-172)**2 + (y-60)**2
mp.scatter(x,y,c=d,cmap='jet')

填充

mp.fill_between(
    x,            # 水平坐标轴
    sin_x,        # 下边界
    cos_x,        # 上边界
    sin_x<cos_x,  # 填充条件
    color = '',   # 填充颜色  
    alpha = 0.2   # 透明度
)

条形图

mp.figure('Bar',facecolor = 'lightgray')
mp.bar(
    x,y,
    width = ,
    color = '',
    label = '',
    alpha = 0.2
)

饼图

mp.pie(
    values,
    spaces,
    labels,
    colors,
    shadow = True,
    startangle= 90,
    radius =1
)

等高线图

mp.contour(x,y,z,8,cmap='jet')
cntr = mp.contour(
    x,
    y,
    z,
    8,
    colors = 'black',
    linewidths = 0.5
)

热成像图

mp.imshow(z,cmap = 'jet',origin = 'low')
mp.colorbar()

极坐标系

mp.figure("Polar", facecolor='lightgray')
mp.gca(projection='polar')
mp.title('Porlar', fontsize=20)
mp.xlabel(r'$\theta$', fontsize=14)
mp.ylabel(r'$\rho$', fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(linestyle=':')
mp.show()

t = np.linspace(0, 4*np.pi, 1000)
r = 0.8 * t
mp.plot(t, r)
mp.show()

x = np.linspace(0, 6*np.pi, 1000)
y = 3*np.sin(6*x)
mp.plot(x, y)

3D图像绘制

3D散点图

import numpy as np
import matplotlib.pyplot as mp
from mpl_toolkits.mplot3d import axes3d

n = 300
x = np.random.normal(0, 1, n)
y = np.random.normal(0, 1, n)
z = np.random.normal(0, 1, n)
# 绘制3维散点图
mp.figure('3D Scatter', facecolor='lightgray')
ax3d = mp.gca(projection='3d')
ax3d.set_xlabel('x', fontsize=16)
ax3d.set_ylabel('y', fontsize=16)
ax3d.set_zlabel('z', fontsize=16)
d = x**2 + y**2 + z**2
ax3d.scatter(x, y, z, marker='o', s=70,
             c=d, alpha=0.5, cmap='jet')
mp.tight_layout()
mp.show()

3D平面图

n = 1000
# 生成网格化坐标矩阵
x, y = np.meshgrid(np.linspace(-3, 3, n),
np.linspace(-3, 3, n))
# 根据每个网格点坐标,通过某个公式计算z高度坐标
z = (1 - x/2 + x**5 + y**3) * np.exp(-x**2 - y**2)
mp.figure('3D', facecolor='lightgray')
ax3d = mp.gca(projection='3d')
mp.title('3D', fontsize=20)
ax3d.set_xlabel('x', fontsize=14)
ax3d.set_ylabel('y', fontsize=14)
ax3d.set_zlabel('z', fontsize=14)
mp.tick_params(labelsize=10)
# 绘制3D平面图
# rstride: 行跨距
# cstride: 列跨距
ax3d.plot_surface(x,y,z,rstride=30,cstride=30, cmap='jet')

3D框线图

ax3d.plot_wireframe(x,y,z,rstride=30,cstride=30,
linewidth=1, color='dodgerblue')

简单动画 --气泡生长

import numpy as np
import matplotlib.pyplot as mp
import matplotlib.animation as ma

# 初始化构建所有样本
n = 100
balls = np.zeros(n, dtype=[
    ('position', float, 2),
    ('size', float, 1),
    ('growth', float, 1),
    ('color', float, 4)])

balls['position'] = np.random.uniform(0, 1, (n, 2))
balls['size'] = np.random.uniform(40, 50, n)
balls['growth'] = np.random.uniform(10, 20, n)
balls['color'] = np.random.uniform(0, 1, (n, 4))

# 绘制图像
mp.figure('Bubble', facecolor='lightgray')
mp.title('Bubble', fontsize=16)
sc = mp.scatter(balls['position'][:, 0],
                balls['position'][:, 1],
                balls['size'],
                color=balls['color'])
# 实现动画
def update(number):
    # 更新界面,让每个点不断增大
    balls['size'] += balls['growth']
    # 选择一个球,重新初始化size与position
    index = number % 100
    balls['size'][index] = \
        np.random.uniform(40, 50, 1)
    balls['position'][index] = \
        np.random.uniform(0, 1, (1, 2))
    # 更新界面
    sc.set_sizes(balls['size'])
    sc.set_offsets(balls['position'])

# 每隔30毫秒,执行一次update函数
anim = ma.FuncAnimation(
    mp.gcf(), update, interval=30)
mp.show()
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值