matplotlib绘制几种基础图形(二)

(6)热成像图(用图形的方式显示矩阵和矩阵中值的大小)

# 热成像图(用图形的方式显示矩阵和矩阵中值的大小)
import numpy as np
import matplotlib.pyplot as mp


x,y = np.meshgrid(np.linspace(-3,3,1000),
                  np.linspace(-3,3,1000))
# 模拟海拔高度
z = (1 -x / 2 + x**5 + y**3) * np.exp(-x**2-y**2)


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

在这里插入图片描述

(7)三维散点图

# 3D 图像绘制
# 三维散点图
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as mp
import numpy as np

n = 300
x = np.random.normal(0,1,n)
y = np.random.normal(0,1,n)
z = np.random.normal(0,1,n)

mp.figure('3D scatter',facecolor='lightgray')

ax3d = mp.gca(projection='3d')
ax3d.set_xlabel('X')
ax3d.set_ylabel('Y')
ax3d.set_zlabel('Z')

d = x**2 + y**2 + z**2
ax3d.scatter(x,  # x轴坐标数组
             y,  # y轴坐标数组
             z,  # z轴坐标数组
             s=70,# 大小
             marker='o',# 点型
             c=d,
             cmap='jet')

mp.show()

在这里插入图片描述

(8)3d曲面图

# 3d曲面图
import numpy as np
import matplotlib.pyplot as mp
from mpl_toolkits.mplot3d import axes3d

x,y = np.meshgrid(np.linspace(-3,3,1000),
                  np.linspace(-3,3,1000))
# 模拟海拔高度
z = (1 -x / 2 + x**5 + y**3) * np.exp(-x**2-y**2)


mp.figure('3D surface',facecolor='lightgray')

ax3d = mp.gca(projection='3d')
ax3d.set_xlabel('X')
ax3d.set_ylabel('Y')
ax3d.set_zlabel('Z')
ax3d.plot_surface(x,
                  y,
                  z,
                  cstride=30,#行跨距
                  rstride=30,#列跨距
                  cmap='jet')

mp.show()

在这里插入图片描述

(9)3d线框图

# 3d线框图
import numpy as np
import matplotlib.pyplot as mp
from mpl_toolkits.mplot3d import axes3d

x,y = np.meshgrid(np.linspace(-3,3,1000),
                  np.linspace(-3,3,1000))
# 模拟海拔高度
z = (1 -x / 2 + x**5 + y**3) * np.exp(-x**2-y**2)


mp.figure('3D surface',facecolor='lightgray')

ax3d = mp.gca(projection='3d')
ax3d.set_xlabel('X')
ax3d.set_ylabel('Y')
ax3d.set_zlabel('Z')
ax3d.plot_wireframe(x,
                  y,
                  z,
                  cstride=30,#行跨距
                  rstride=30,#列跨距
                  linewidth=1,
                  color='orange')

mp.show()

在这里插入图片描述

(10)极坐标系-绘制曲线

# 极坐标系-绘制曲线
import numpy as np
import matplotlib.pyplot as mp

mp.figure("polar",facecolor='lightgray')
mp.gca(projection='polar')
mp.title('polar',fontsize=20)

mp.xlabel(r'$\theta$',fontsize=14)
mp.xlabel(r'$\rho$',fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(linestyle=':')

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

mp.show()

在这里插入图片描述

(11)简单动画(随机生成各种颜色的100个气球,使其不断的增大)

'''
随机生成各种颜色的100个气球,让他们不断的增大
'''
import matplotlib.animation as ma
import matplotlib.pyplot as mp
import numpy as np

# 自定义一种可以存放在ndarray里的类型,用于保存一个球
ball_type = np.dtype([
    ('position',float,2),# 位置
    ('size',float,1),# 大小
    ('growth',float,1),# 生长速度
    ('color',float,4) # 颜色
])
# 随机生成100个点对象
n = 100
balls = np.zeros(100,dtype=ball_type)
# 初始化balls数组每个字段的属性值
balls['position'] = np.random.uniform(0, 1, (n, 2))
balls['size'] = np.random.uniform(50, 70, n)
balls['growth'] = np.random.uniform(10, 20, n)
balls['color'] = np.random.uniform(0, 1, (n, 4))

# 画图
mp.figure("animation",facecolor='lightgray')
mp.title('balls',fontsize=16)
# 设置刻度为空
mp.xticks([])
mp.yticks([])
sc = mp.scatter(
    balls['position'][:,0],
    balls['position'][:,1],
    s=balls['size'],
    color=balls['color'])
# 动画
def update(number):
    # 选择一个点
    index = number % 100
    # 重新修改index位置元素的属性
    balls['position'][index] = np.random.uniform(0, 1 , (1, 2))
    balls['size'][index] = np.random.uniform(50, 70 , 1)
    balls['size'] += balls['growth']
    # 重新绘制
    sc.set_sizes(balls['size']) # 更新大小
    sc.set_offsets(balls['position']) # 更新位置

anim = ma.FuncAnimation(
    mp.gcf(),
    update,
    interval=30 # 每隔30毫秒执行一次update
)

mp.show()

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值