2401_83625214 2024-04-13 15:01 采纳率: 100%
浏览 10
已结题

python的matplotlib怎么实现矩阵动态绘图

python写元胞自动机,用矩阵表示状态,最后用plt.show绘图,请问怎么才能实现动态绘图(纯小white)

img

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-13 15:01
    关注

    引自免费微信小程序:皆我百晓生

    在Python中,使用matplotlib库进行矩阵动态绘图可以通过创建一个动画对象来实现。这里是一个详细的步骤和代码示例,用于展示如何将给定的代码片段修改为动态绘制元胞自动机的状态。

    首先,确保已经安装了matplotlibipython的交互式环境(例如Jupyter Notebook)。如果没有安装,可以使用以下命令安装:

    pip install matplotlib ipython
    

    然后,将代码转换成动态绘图版本。我们需要引入必要的模块,并创建一个动画类。以下是修改后的代码:

    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.animation import FuncAnimation
    
    # 假设这是你的初始矩阵
    initial_matrix = np.random.randint(0, 2, size=(10, 10))
    c = initial_matrix
    
    def cell_change(matrix):
        # 这里是你的细胞更新规则
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                num_neighbors = sum([matrix[(i + k) % 10][(j + l) % 10] for k in [-1, 0, 1] for l in [-1, 0, 1] if (k != 0 or l != 0)])
                
                if matrix[i][j] == False and (num_neighbors > 2) and (num_neighbors < 4):
                    probability = np.random.rand()
                    if probability > 0.5:
                        matrix[i][j] = True
                    else:
                        matrix[i][j] = False
                elif matrix[i][j] == True and num_neighbors < 2:
                    matrix[i][j] = False
                elif matrix[i][j] == True and num_neighbors >= 3:
                    pass
    
    def animate(i):
        global c
        cell_change(c)
        plt.imshow(c, cmap='gray')
    
    fig, ax = plt.subplots()
    ani = FuncAnimation(fig, animate, frames=np.arange(1, 100), interval=100)  # 每隔100毫秒更新一次
    plt.show()
    
    

    这段代码首先导入了所需的库,然后定义了一个名为cell_change的函数,这个函数与您提供的代码相同。接下来,我们定义了一个名为animate的函数,它将在每个时间步长上更新图像。我们创建了一个新的图像窗口,并使用FuncAnimation创建了一个动画,它每100毫秒调用一次animate函数,总共运行99次(从1到100)。

    这将创建一个动态的元胞自动机图形,显示矩阵随时间的变化。注意,为了在非交互式环境中运行此代码,可能需要使用%matplotlib notebook%matplotlib widget魔法命令来启用交互式绘图。如果你在Jupyter Notebook中运行,不需要额外设置。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日
  • 创建了问题 4月13日

悬赏问题

  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 如何卸载arcgis 10.1 data reviewer for desktop
  • ¥15 共享文件夹会话中为什么会有WORKGROUP
  • ¥15 关于#python#的问题:使用ATL02数据解算光子脚点的坐标(操作系统-windows)
  • ¥115 关于#python#的问题:未加密前两个软件都可以打开,加密后只有A软件可打开,B软件可以打开但读取不了数据
  • ¥15 在matlab中Application Compiler后的软件无法打开
  • ¥15 想问一下STM32创建工程模板时遇到得问题