• Matplotlib画正弦余弦曲线


    参考1:http://www.labri.fr/perso/nrougier/teaching/matplotlib/

    参考2:https://matplotlib.org/api/artist_api.html

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
    y_sin = np.sin(x)
    y_cos = np.cos(x)
    
    plt.figure(figsize=(10,5))
    plt.xlabel('Time(s)')
    plt.ylabel('Value')
    plt.title('Sin and Cos')
    plt.plot(x, y_sin, label="$sin(x)$", color="blue")
    plt.plot(x, y_cos, label="$cos(x)$", color="red")
    plt.xlim(-4,4)
    plt.xticks(np.linspace(-4,4,9,endpoint=True))
    # plt.ylim(-1.2,1.2)
    # plt.yticks(np.linspace(-1,1,9,endpoint=True))
    plt.grid(True, which='major', c='gray', ls='-', lw=1, alpha=0.2)
    plt.legend()
    plt.show()
    

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
    y_sin = np.sin(x)
    y_cos = np.cos(x)
    
    plt.figure(figsize=(10,5))
    
    # 移动边界线,构建坐标系,原点为0
    ax = plt.gca()  #获取当前轴线实例
    ax.xaxis.set_ticks_position('bottom')  #x轴线,使用spine中的bottom线
    ax.yaxis.set_ticks_position('left')  #y轴线,使用spine中的left线
    ax.spines['bottom'].set_position(('data',0))  #将bottom线的位置设置为数据为0的位置
    ax.spines['left'].set_position(('data',0))  #将left线的位置设置为数据为0的位置
    ax.spines['top'].set_color('none')  #将top线的颜色设置为无
    ax.spines['right'].set_color('none')  #将right线的颜色设置为无
    
    # plt.xlabel('Time(s)')
    # plt.ylabel('Value')
    plt.title('Sin and Cos')
    plt.plot(x, y_sin, label="$sin(x)$", color="blue")
    plt.plot(x, y_cos, label="$cos(x)$", color="red")
    plt.xlim(-4,4)  # 设置x轴的范围
    # plt.xticks(np.linspace(-4,4,9,endpoint=True))
    # 设置x轴的标尺刻度,从-pi到pi,取5个值
    plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-pi$',r'$-pi/2$',r'$0$',r'$pi/2$',r'$pi$'])
    # plt.ylim(-1.2,1.2)
    # plt.yticks(np.linspace(-1,1,5,endpoint=True))
    plt.grid(True, which='major', c='gray', ls='-', lw=1, alpha=0.2)
    plt.legend()
    plt.show()
    

     

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
    y_sin = np.sin(x)
    y_cos = np.cos(x)
    
    plt.figure(figsize=(10,5),dpi=80)
    
    # 移动边界线,构建坐标系,原点为0
    ax = plt.gca()  #获取当前轴线实例
    ax.xaxis.set_ticks_position('bottom')  #x轴线,使用spine中的bottom线
    ax.yaxis.set_ticks_position('left')  #y轴线,使用spine中的left线
    ax.spines['bottom'].set_position(('data',0))  #将bottom线的位置设置为数据为0的位置
    ax.spines['left'].set_position(('data',0))  #将left线的位置设置为数据为0的位置
    ax.spines['top'].set_color('none')  #将top线的颜色设置为无
    ax.spines['right'].set_color('none')  #将right线的颜色设置为无
    
    # plt.xlabel('Time(s)')
    # plt.ylabel('Value')
    plt.title('Sin and Cos')
    plt.plot(x, y_sin, label="$sin(x)$", color="blue", linestyle="-")
    plt.plot(x, y_cos, label="$cos(x)$", color="red", linestyle="-")
    plt.xlim(-4,4)  # 设置x轴的范围
    # plt.xticks(np.linspace(-4,4,9,endpoint=True))
    # 设置x轴的标尺刻度,从-pi到pi,取5个值
    plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-pi$',r'$-pi/2$',r'$0$',r'$pi/2$',r'$pi$'])
    plt.ylim(-1.2,1.2)
    plt.yticks(np.linspace(-1,1,5,endpoint=True))
    
    t = 2*np.pi/3
    plt.plot([t,t],[0,np.cos(t)], color ='red', linewidth=1.5, linestyle="--")
    plt.scatter([t,],[np.cos(t),], 50, color ='red')
    plt.annotate(r'$sin(frac{2pi}{3})=frac{sqrt{3}}{2}$',
                 xy=(t, np.sin(t)), xycoords='data',
                 xytext=(+10, +30), textcoords='offset points', fontsize=16,
                 arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
    
    plt.plot([t,t],[0,np.sin(t)], color ='blue', linewidth=1.5, linestyle="--")
    plt.scatter([t,],[np.sin(t),], 50, color ='blue')
    plt.annotate(r'$cos(frac{2pi}{3})=-frac{1}{2}$',
                 xy=(t, np.cos(t)), xycoords='data',
                 xytext=(-90, -50), textcoords='offset points', fontsize=16,
                 arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
    
    # plt.grid(True, which='major', c='gray', ls='-', lw=1, alpha=0.2)
    plt.legend()
    plt.show()
    

    import numpy as np
    import matplotlib.pyplot as plt
    
    x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
    y_sin = np.sin(x)
    y_cos = np.cos(x)
    
    plt.figure(figsize=(10,5),dpi=80)
    
    # 移动边界线,构建坐标系,原点为0
    ax = plt.gca()  #获取当前轴线实例
    ax.xaxis.set_ticks_position('bottom')  #x轴线,使用spine中的bottom线
    ax.yaxis.set_ticks_position('left')  #y轴线,使用spine中的left线
    ax.spines['bottom'].set_position(('data',0))  #将bottom线的位置设置为数据为0的位置
    ax.spines['left'].set_position(('data',0))  #将left线的位置设置为数据为0的位置
    ax.spines['top'].set_color('none')  #将top线的颜色设置为无
    ax.spines['right'].set_color('none')  #将right线的颜色设置为无
    
    # plt.xlabel('Time(s)')
    # plt.ylabel('Value')
    plt.title('Sine and Cosine')
    # zorder 控制划线顺序:数值越小越先画
    plt.plot(x, y_sin, label="$sin(x)$", color="blue", linewidth=2.5, linestyle="-", zorder=-2)
    plt.plot(x, y_cos, label="$cos(x)$", color="red", linewidth=2.5, linestyle="-", zorder=-1)
    plt.xlim(-4,4)  # 设置x轴的范围
    # plt.xticks(np.linspace(-4,4,9,endpoint=True))
    # 设置x轴的标尺刻度,从-pi到pi,取5个值
    plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-pi$',r'$-pi/2$',r'$0$',r'$pi/2$',r'$pi$'])
    plt.ylim(-1.2,1.2)
    plt.yticks(np.linspace(-1,1,5,endpoint=True))
    
    t = 2*np.pi/3
    plt.plot([t,t],[0,np.cos(t)], color ='red', linewidth=1.5, linestyle="--")
    plt.scatter([t,],[np.cos(t),], 50, color ='red')
    plt.annotate(r'$sin(frac{2pi}{3})=frac{sqrt{3}}{2}$',
                 xy=(t, np.sin(t)), xycoords='data',
                 xytext=(+10, +30), textcoords='offset points', fontsize=16,
                 arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
    
    plt.plot([t,t],[0,np.sin(t)], color ='blue', linewidth=1.5, linestyle="--")
    plt.scatter([t,],[np.sin(t),], 50, color ='blue')
    plt.annotate(r'$cos(frac{2pi}{3})=-frac{1}{2}$',
                 xy=(t, np.cos(t)), xycoords='data',
                 xytext=(-90, -50), textcoords='offset points', fontsize=16,
                 arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
    
    # 对坐标轴上的标度单独做标注
    for label in ax.get_xticklabels() + ax.get_yticklabels():
        label.set_fontsize(14)
        label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65 ))
    
    # plt.grid(True, which='major', c='gray', ls='-', lw=1, alpha=0.2)
    plt.legend()
    plt.show()
    

      

  • 相关阅读:
    【html】页面制作规范文档
    【jquery】blockUI 弹出层
    前端攻城师所要掌握的知识和技能
    【html】edm 邮件制作指南
    【css】教你如何写出高效整洁的 css 代码——css优化
    前端开发神器notepad++以及zen coding神级插件
    百度统计流量研究院——了解互联网行业基本数据分布和趋势
    【css】我的 css 框架——base.css
    通过扩展方法 链式方法 为MVC 3 视图添加验证
    使用正则表达式抓取博客园列表数据
  • 原文地址:https://www.cnblogs.com/standby/p/10580804.html
Copyright © 2020-2023  润新知