美文网首页
matplotlib

matplotlib

作者: 岑洋 | 来源:发表于2018-11-29 10:51 被阅读0次

    自学整理记录,大神见笑

    from matplotlib import pyplot as plt

    • 常用统计图
      1.折线图,主要查看变化
      2.直方图,绘制连续型数据,主要是统计
      3.条形图,绘制离散型数据,主要是统计
      4.散点图,主要查看分布规律

    折线图

    • 提供数据,指定x横轴的值,指定y纵轴的值

    x = range(2, 26, 2)
    y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15]

    • 绘图,传入x和y,通过plot绘制出折线图

    plt.plot(x, y)

    • 展示图在执行程序的时候展示图形

    plt.show()

    • 注:x和y的列表个数要相同,否则会报错ValueError

    折线图扩展

    • 设置图片大小和像素

    plt.figure(figsize=(20, 8), dpi=80)

    • 注:要写在绘图之前

    • 注:figsize两个参数分别表示长度和宽度

    • 注:dpi是让图像更清晰

    • 保存图片

    plt.savefig("./test1.png")

    • 注:要写在绘图之后

    • 注:参数是保存的路径

    • 注:自己加后缀保存成自己想要的格式,比如保存为svg矢量图格式,放大不会有锯齿

    • 轴刻度

    plt.xticks(range(2, 26, 2))
    plt.yticks(range(min(y) + 1, max(y) + 1))

    • 注:上面代码分别为设置x轴刻度和y轴刻度

    • 调整轴刻度显示信息(包含显示内容、中文乱码)

    my_font = font_manager.FontProperties(fname="C:\Windows\ttt\simsun.ttc", size=14)
    # 调整x轴刻度信息
    _x = list(x)
    _xtick_labels = ["10点{}分".format(i) for i in range(60)]
    _xtick_labels += ["11点{}分".format(i) for i in range(60)]
    plt.xticks(_x[::3], _xtick_labels[::3], rotation=45, fontproperties=my_font)

    • 注:需要导包

    from matplotlib import font_manager

    • 注:rotation表示旋转角度,顺时针旋转

    • 注:fontproperties正常显示中文字体

    • 注:fename后面的路径一定要手动输入

    • 注:可以在FontProperties中的参数size设置字体大小

    • 注:y轴同理

    • x轴、y轴和标题的提示信息

    plt.xlabel("时间", fontproperties=my_font)
    plt.ylabel("时间/温度(℃)", fontproperties=my_font)
    plt.title("10点到12点每分钟温度变化图", fontproperties=my_font)

    • 注:xlabel即x轴信息,ylabel即y轴信息,title即标题

    • 注:如果中文乱码,则在后面添加参数fontproperties即可

    • 绘制网格

    plt.grid(alpha=0.4)

    • 注:alpha表示网格透明度,0透明,1不透明

    • 注:网格的密度,由x轴和y轴刻度控制

    • 绘制多个线条

    plt.plot(x, y_1)
    plt.plot(x, y_2)

    • 注:再plot一次就会画出多一条线

    • 添加图例

    plt.plot(x, y_1, label="自己")
    plt.plot(x, y_2, label="同桌")
    ...
    plt.legend(prop=my_font, loc="upper right")

    • 注:两个步骤,首先在plot方法中添加参数label,然后写添加图例方法legeng()

    • 注:legend中prop参数是解决中文乱码

    • 注:legend中loc参数是图例放的位置,默认是best,系统会放在最合适的位置,自己可以写英文或者汉字,查原码即可

    • 线条样式(颜色、线条风格,线条宽度等)

    plt.plot(x, y_1,color="r", linestyle="--", linewidth=5)

    • 注:color参数可以填颜色字符,或者十六进制颜色代码都可以
    • 注:linestyle参数可以改变线条风格
    • 注:linewidth参数越大越粗
    线条风格.jpg
    • 添加文本注释

    • 添加水印

    散点图

    • 绘图,传入x和y,通过scatter绘制出散点图

    plt.scatter(x, y)

    • 注:x和y的列表个数要相同,否则会报错ValueError
    • 注: 散点图扩展与折线图一样

    条形图

    • 绘图,传入x和y,通过bar绘制出条形图

    plt.bar(x, y)

    • 注:默认会竖着显示

    条形图扩展

    • 横着显示

    plt.barh(x, y)

    • 条形宽度

    plt.bar(x, y, width=0.3)
    plt.barh(x, y, height=0.3)

    • 注:竖着使用width,横着使用height
    • 注:其余扩展与折线图类似
    • 注:绘制多次条形图,即将x轴向右移动即可,但移动的距离,次数总和不能超过1,且宽度要合适,如下图
    绘制多次条形图.jpg

    直方图

    • 绘图,传入a和组数20,通过hist绘制出直方图

    plt.hist(a, 20)

    • 注:a参数是原始数据,20参数是组数,即有多少个直方
    • 注:直方图会自己计算数据出现的个数,显示在图上,所以需要原始数据,不能用统计好之后的数据
    • 注:如果是统计好的数据,依然想绘制成直方图的样式,使用条形图即可
    • 注:使用条形图时画出直方图效果,需要将width设置为1,并且x轴刻度向左移动0.5即可

    直方图扩展

    • 计算组数

    d = 5
    num_bins = (max(a) - min(a)) // d
    ...
    plt.hist(a, num_bins)
    plt.xticks(range(min(a), max(a)+d, d))

    • 注:num_bins即组数,d为组距

    • 注:最大值与最小值的差除组距,一定要保证整除,否则x轴显示会偏移

    • 注:xticks方法中,max+d保证值都能显示完全

    • 频率分布直方图

    plt.hist(a, num_bins, normed=True)

    • 注:正常y轴会显示出现的区域内出现的个数
    • 注:normed设置为True,即会将y轴显示为小数格式的频率

    相关文章

      网友评论

          本文标题:matplotlib

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