python matplotlib 指数函数拟合 常用绘图方法

写在前面

一直没有详细的总结过,这次也是受人之拖,搞得一次简单的拟合,图形展示结果。
有时间总结一下matplotlib这个包的函数及常见用法

代码

import math
import matplotlib
import matplot
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
#  为了显示中文

def HH(m,n):
    """
    问题一,输入m,n参数,返回一个(m+1*(n+1)的矩阵
    """
    ##创建空列表
    a=[]
    
    ##在空列表中进行添加列表
    for i in range(0,m+1):
    ##a列表元素添加列表
        a.append([])
        for j in range(0,n+1):
            a[i].append(0)

    for i in range(0,m+1):  
        a[i][0]=math.exp(i/m)
    for i in range(0,n+1):  
        a[0][i]=math.exp(i/n)
    for i in range(0,n+1):  
        a[m][i]=math.exp(i/n+1)

    # print(a)
    for i in range(1,n+1):
        for t in range(1,m):
            a[t][i]=a[t][i-1]+m*m/n*(-2*a[t][i-1]+a[t+1][i-1]+a[t-1][i-1])

    return a
# HH(4,5)
def plot_question2(t1,m,n):
    """
    问题二,输入一个t1 输入一组m ,n得到对应矩阵
    图里包含两个图像 
    第一个是连续的直线y=exp(t1/n+x)   
    另一个是对应矩阵的a[x][t1]的一串散点  (两图像不同颜色)
    横轴为x 范围(0,1"""
    x = np.arange(0,1,1/(m+1)) 
    y1 = np.exp(t1/n+x) 
    plt.title("对比图像")

    plt.plot(x, y1,label='y=exp(t1/n+x)')
    
    
    a= get_column_list(t1,m,n)
    y2 = np.array(a)
    plt.plot(x, y2,label='m: '+ str(m) + ' n: '+str(n)+' 拟合曲线')

    plt.legend()
    plt.show()

def get_column_list(t,m,n):
    """
    给m,n
    取逻辑上第t列数据
    t最小为1

    """
    a=HH(m,n)
    data=[]
    # print(a)
    for i in range(0,m+1):
        data.append(a[i][t-1])
    print(data)
    return data

def get_five_column_list(t,m1,n1,m2,n2,m3,n3,m4,n4,m5,n5):
    data=get_column_list(t,m1,n1)
    x = np.arange(0,1,1/(m1+1)) 
    y = np.array(data)
    plt.plot(x,y,label='m: '+ str(m1) + ' n: '+str(n1))
  

    data=get_column_list(t,m2,n2)
    x = np.arange(0,1,1/(m2+1)) 
    y = np.array(data)
    plt.plot(x,y,label='m: '+ str(m2) + ' n: '+str(n2))
    
    data=get_column_list(t,m3,n3)
    x = np.arange(0,1,1/(m3+1)) 
    y = np.array(data)
    plt.plot(x,y,label='m: '+ str(m3) + ' n: '+str(n3))

    data=get_column_list(t,m4,n4)
    x = np.arange(0,1,1/(m4+1)) 
    y = np.array(data)
    plt.plot(x,y,label='m: '+ str(m4) + ' n: '+str(n4))

    data=get_column_list(t,m5,n5)
    x = np.arange(0,1,1/(m5+1)) 
    y = np.array(data)
    plt.plot(x,y,label='m: '+ str(m5) + ' n: '+str(n5))

    plt.legend()
    plt.show()

plot_question2(3,3,3)
get_column_list(2,3,3)
get_five_column_list(3,3,3,4,4,5,5,6,6,7,7)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值