动态绘图

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
from mpl_toolkits.mplot3d import Axes3D

解决中文乱码问题

myfont = fm.FontProperties(fname="/Library/Fonts/Songti.ttc", size=14)
matplotlib.rcParams["axes.unicode_minus"] = False

def simple_plot():
"""
simple plot
"""
# 生成画布
plt.figure(figsize=(8, 6), dpi=80)

# 打开交互模式
plt.ion()

# 循环
for index in range(100):
    # 清除原有图像
    plt.cla()

    # 设定标题等
    plt.title("动态曲线图", fontproperties=myfont)
    plt.grid(True)

    # 生成测试数据
    x = np.linspace(-np.pi + 0.1*index, np.pi+0.1*index, 256, endpoint=True)
    y_cos, y_sin = np.cos(x), np.sin(x)

    # 设置X轴
    plt.xlabel("X轴", fontproperties=myfont)
    plt.xlim(-4 + 0.1*index, 4 + 0.1*index)
    plt.xticks(np.linspace(-4 + 0.1*index, 4+0.1*index, 9, endpoint=True))

    # 设置Y轴
    plt.ylabel("Y轴", fontproperties=myfont)
    plt.ylim(-1.0, 1.0)
    plt.yticks(np.linspace(-1, 1, 9, endpoint=True))

    # 画两条曲线
    plt.plot(x, y_cos, "b--", linewidth=2.0, label="cos示例")
    plt.plot(x, y_sin, "g-", linewidth=2.0, label="sin示例")

    # 设置图例位置,loc可以为[upper, lower, left, right, center]
    plt.legend(loc="upper left", prop=myfont, shadow=True)

    # 暂停
    plt.pause(0.1)

# 关闭交互模式
plt.ioff()

# 图形显示
plt.show()
return

simple_plot()

def scatter_plot():
"""
scatter plot
"""
# 打开交互模式
plt.ion()

# 循环
for index in range(50):
    # 清除原有图像
    # plt.cla()

    # 设定标题等
    plt.title("动态散点图", fontproperties=myfont)
    plt.grid(True)

    # 生成测试数据
    point_count = 5
    x_index = np.random.random(point_count)
    y_index = np.random.random(point_count)

    # 设置相关参数
    color_list = np.random.random(point_count)
    scale_list = np.random.random(point_count) * 100

    # 画散点图
    plt.scatter(x_index, y_index, s=scale_list, c=color_list, marker="o")

    # 暂停
    plt.pause(0.2)

# 关闭交互模式
plt.ioff()

# 显示图形
plt.show()
return

scatter_plot()

def three_dimension_scatter():
"""
3d scatter plot
"""
# 生成画布
fig = plt.figure()

# 打开交互模式
plt.ion()

# 循环
for index in range(50):
    # 清除原有图像
    fig.clf()

    # 设定标题等
    fig.suptitle("三维动态散点图", fontproperties=myfont)

    # 生成测试数据
    point_count = 100
    x = np.random.random(point_count)
    y = np.random.random(point_count)
    z = np.random.random(point_count)
    color = np.random.random(point_count)
    scale = np.random.random(point_count) * 100

    # 生成画布
    ax = fig.add_subplot(111, projection="3d")

    # 画三维散点图
    ax.scatter(x, y, z, s=scale, c=color, marker=".")

    # 设置坐标轴图标
    ax.set_xlabel("X Label")
    ax.set_ylabel("Y Label")
    ax.set_zlabel("Z Label")

    # 设置坐标轴范围
    ax.set_xlim(0, 1)
    ax.set_ylim(0, 1)
    ax.set_zlim(0, 1)

    # 暂停
    plt.pause(0.2)

# 关闭交互模式
plt.ioff()

# 图形显示
plt.show()
return

three_dimension_scatter()

猜你喜欢

转载自www.cnblogs.com/icodeworld/p/11296575.html