matplotlib画图 2021-07-02


import time
from matplotlib.font_manager import FontProperties
from matplotlib import pyplot as plt
# plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
# C:\Windows\Fonts  我在winows字体中随便选了一个 用来解决中文乱码
font=FontProperties(fname=r'./STXINGKA.TTF',size=20)
import numpy as np
plt.figure(figsize=(16,9),dpi=60)

def test_zhe():
    # 画一个折线图。
    # x=np.linspace(0,2*np.pi,40)
    x=np.linspace(1,20,40)
    y1=np.random.randint(-20,50,size=40)
    y2=np.random.randint(-20,50,size=40)
    y3=np.random.randint(-20,50,size=40)

    plt.plot(x,y1,label='y1上课')
    plt.plot(x,y2,label='y2')
    plt.plot(x,y3,label='y3')

    plt.xlabel("x轴",fontproperties=font)
    plt.ylabel("y轴",fontproperties=font)
    plt.title("标题",fontproperties=font)


    plt.legend(bbox_to_anchor=(1,1), loc='upper right', borderaxespad=0)
    # 修改文字
    leg = plt.gca().get_legend() #或leg=ax.get_legend()
    ltext = leg.get_texts()
    # plt.setp(ltext, fontsize=12,font=font)
    plt.setp(ltext,font=font)

    # 修改刻度
    ax = plt.gca()
    # plt.xlim(-0.5, 11)
    # 把x轴的刻度范围设置为-0.5到11,因为0.5不满一个刻度间隔,所以数字不会显示出来,但是能看到一点空白
    # plt.ylim(-5, 110)

    plt.show()
    plt.savefig("test.jpg")
    plt.close()


def plot_have_sub():
    plt.figure(figsize=(16, 9), dpi=60)
    # 一个图均匀分布在[0,50] 共100个
    x = np.linspace(0, 50, 100)

    # 将多张子图展示在一起,可以使用 subplot() 实现。即在调用 plot() 函数之前需要先调用 subplot() 函数。
    # 该函数的第一个参数代表子图的总行数,第二个参数代表子图的总列数,第三个参数代表活跃区域
    ax1=plt.subplot(2,1,1) # 行,列,活动区
    plt.plot(x,np.sin(x),'r')
    plt.xlabel("x轴",fontproperties=font)
    plt.ylabel("y轴",fontproperties=font)
    plt.title("标题",fontproperties=font)

    ax2=plt.subplot(2,1,2)
    plt.plot(x,np.cos(x),'g')
    plt.xlabel("x轴2",fontproperties=font)
    plt.ylabel("y轴2",fontproperties=font)
    plt.title("标题2",fontproperties=font)
    # 避免重叠
    plt.tight_layout()

    plt.show()


if __name__ == '__main__':
    # 折线图,多条
    test_zhe()

    # 带有子图的
    plot_have_sub()


你可能感兴趣的:(matplotlib画图 2021-07-02)