美文网首页
python 使用matplotlib绘制折线图

python 使用matplotlib绘制折线图

作者: TAsama | 来源:发表于2018-12-21 16:14 被阅读11次

    1. matplotlib

    1. 能将数据进行可视化,更直观的呈现
    2. 是数据更加客观、更具说服力

    matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建

    例:假设一天中每隔两个小时(range(2,26,2))的气温(℃)分别是[15,13,14.5,17,20,25,26,26,27,22,18,15]

    from matplotlib import pyplot 
    x = range(2, 26, 2)
    y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
    # -->x轴和y轴的数据一起组成了所有要绘制出的坐标
    # -->分别是(2,15),(4,13),(6,14.5),(8,17)...
    pyplot.plot(x, y)
    pyplot.show()
    

    即所得结果:



    这个结果与我们想要的结果并不完全相同,x轴和y轴的刻度不是我们想要的,另外,图片中没有相关的文字介绍,我们的坐标轴并没有明确表达其含义!

    1. 使用figure改变图片大小
    from matplotlib import pyplot as plt
    
    x = range(2, 26, 2)
    y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
    # 设置了图片大小,和图片的dpi
    fig = plt.figure(figsize=(20, 8), dpi=80)
    plt.plot(x, y)
    # 以矢量图保存,这样放大不会失真,不会模糊
    plt.savefig("./t1.svg")
    plt.show()
    
    改变大小后的图
    1. 修改x的刻度
    from matplotlib import pyplot as plt
    
    
    x = range(2, 26, 2)
    y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
    
    fig = plt.figure(figsize=(20, 8), dpi=80)
    plt.plot(x, y)
    plt.xticks(x) # 这里传入的x就是x轴的列表
    plt.yticks(range(min(y), max(y) + 1))
    plt.show()
    
    改变了坐标轴后

    可以看到,刻度改变了,折线图会自适应刻度去变化。

    1. 中文支持
    from matplotlib import pyplot as plt
    from matplotlib import font_manager
    
    my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc')
    
    x = range(2, 26, 2)
    y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
    
    fig = plt.figure(figsize=(20, 8), dpi=80)
    plt.plot(x, y)
    plt.xticks(x, fontproperties=my_font)
    plt.yticks(range(min(y), max(y) + 1))
    plt.show()
    

    我们还可以添加描述:

    plt.xlabel('时间', fontproperties=my_font)
    plt.ylabel('温度', fontproperties=my_font)
    plt.title('时间温度表', fontproperties=my_font)
    
    添加了坐标轴描述

    绘制网格

    plt.grid()
    
    带网格的图

    网格是根据刻度来绘制的,想要改变网格间距,就更改刻度的稀疏。

    绘制多张折线图时,只需要再plt.plot(x, y)一次即可

    from matplotlib import pyplot as plt
    from matplotlib import font_manager
    
    my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc')
    
    x = range(2, 26, 2)
    y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
    
    fig = plt.figure(figsize=(20, 8), dpi=80)
    plt.plot(x, y)
    y_2 = [21, 14, 31, 7, 5, 12, 17, 8, 14, 21, 12, 23]
    plt.plot(x, y_2)
    plt.xticks(x, fontproperties=my_font)
    plt.yticks(range(min(y), max(y) + 1))
    
    
    plt.xlabel('时间', fontproperties=my_font)
    plt.ylabel('温度', fontproperties=my_font)
    plt.title('时间温度表', fontproperties=my_font)
    
    plt.grid()
    plt.show()
    
    多条线

    添加图例说明

    plt.legend(prop=my_font)
    # prop设置字体,目标是支持中文
    
    添加了图例

    相关文章

      网友评论

          本文标题:python 使用matplotlib绘制折线图

          本文链接:https://www.haomeiwen.com/subject/zloqkqtx.html