杰尼龟啊 2021-09-24 22:33 采纳率: 66.7%
浏览 130
已结题

关于For循环绘制大量曲线问题

我是小白,以前没学过编程。就是我想要生成大量的横坐标是路程S,纵坐标是速度V的曲线,我的思路是利用for循环生成很多个列表(代码里我是每循环一次,生成一次S_table,和V_table这两个列表);
因为想要把这些曲线画在一张图里,然后我把S_table,和V_table分别存到S_list和V_list中,这样就会有很多个小列表(S_table,和V_table)存在大列表(S_list和V_list)中,再用matplotlib绘制(S_list和V_list),这样其中的小列表(S_table,和V_table)就会一一对应,绘制出来。但是我发现plt画不出来,我找到原因其中一个也许是S_table,和V_table是空列表,我不知道为什么会是空列表,我觉得思路是没问题的呀,有谁可以指点指点我,或者提供一个更好的思路吗?代码如图1。

注:4-6行,11-34行是一下物理参数,a代表加速度,b代表减速度,我验证过了公式之间和生成的数据是没问题的,我抛开我弄列表的思想,单独绘制一条曲线是可行的,如图2。

img

img

  • 写回答

4条回答 默认 最新

  • CSDN专家-HGJ 2021-09-24 23:08
    关注

    错误在于这两行:
    for b_1 in np.arange(-0.5, -1.0, 0.1):
    for b_2 in np.arange(-0.5, -1.0, 0.1):
    步长写错了,这样返回结果为None
    步长应该是-0.1,代码这样改写一下:

    import numpy as np
    import matplotlib.pyplot as plt
    s_v1=500
    s_v3=500
    s_all=2000
    for a_1 in np.arange(0.5,1.0,0.1):
        for a_2 in np.arange(0.5,1.0,0.1):
            for b_1 in np.arange(-1.0, -0.5, 0.1):
                for b_2 in np.arange(-1.0, -0.5, 0.1):
                    for v1 in np.arange(10,15,1):
                        for v2 in np.arange(15,20,1):
                            for v3 in np.arange(10,15,1):
                                t1=(v1-0)/a_1
                                t2=(s_v1-t1*v1/2)/v1
                                t3=(v2-v1)/a_2
                                t7=(0-v3)/b_2
                                t6=(s_v3-t7*v3/2)/v3
                                t5=(v3-v2)/b_1
                                t4=(s_all-s_v3-s_v1-(v1+v2)*t3/2-(v2+v3)*t5/2)/v2
                                s1=t1*v1/2
                                s2=v1*t2+s1
                                s3=(v1+v2)*t3/2+s2
                                s4=v2*t4+s3
                                s5=(v2+v3)*t5/2+s4
                                s6=v3*t6+s5
                                s7=v3*t7/2+s6
                                s_list=[0, s1, s2, s3, s4, s5, s6, s7]
                                v_list=[0, v1, v1, v2, v2, v3, v3, 0]
    
                                plt.plot(s_list,v_list)
    plt.show()
    
    

    才能保证列表不为空,并将plot函数放入循环,画出多条曲线(由于循环嵌套过多,运行较慢较卡)。
    运行结果:

    img

    如果解答对你有用,请点击一下我回答的右上方采纳按钮支持一下。

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

报告相同问题?

问题事件

  • 系统已结题 10月4日
  • 已采纳回答 9月26日
  • 创建了问题 9月24日

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料