• matplotlib


    为什么要学习matplotlib

    1.能将数据进行可视化,更直观的呈现

    2,使数据更加美观,更有说服力

    什么是matplotlib

    matplotlib:最流行的python底层绘图库,主要做数据可视化图表,模仿MATLAB构建

    基础绘图

    案例:

    #假设一天中每隔两个小时(range(2,26,2))的气温分别是[15,13,14,5,17,20,25,26,26,24,22,18,15]

    #代码

    import matplotlib.pyplot as plt
    x=range(2,27,2)
    y=[15,13,14,5,17,20,25,26,26,24,22,18,15]
    plt.plot(x,y)
    plt.show()

     接下来要解决几个问题

    1.设置图片的大小

    2.调整X或者Y的刻度的间距

    3.线条的样式(比如颜色,透明度等)

    4.标记处的特殊的点(比如最高点,最低点在哪里)

    5.添加水印

    6.描述信息,X轴,Y轴表示什么,这个图表示什么

    7.保存到本地

    设置图片的大小和保存图形

    案例

    #代码

    fig=plt.figure(figsize=(20,8),dpi=100)

    #figsize接收一个元组,表示图片的高和宽,单位是英寸

    #DPI分辨率,代表了每一英寸有多少像素,默认80
    plt.plot(x,y)
    plt.show

    保存图片

    案例:

    #代码

    fig=plt.figure(figsize=(20,8),dpi=100)
    plt.plot(x,y)
    fig.savefig('test.png')

    #可以保存为SVG这种矢量图格式,放大以后不会有锯齿

    #fig.savefig("test.svg")
    X轴和Y轴的调整和设置中文

    #代码

    plt.plot(x,y)

    #x轴的刻(度

    plt.xticks(x)

    plt.yticks(y)

    plt.show()

    案例2:

    列表A表示10点到12点每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况

    A=[random.randint(20,35)for i in range (120)]

    #代码

    import random
    import matplotlib as mpl
    mpl.rcParams['font.sans-serif'] = ['FangSong']
    mpl.rcParams['font.size'] = 16        
    y=[random.randint(20,35)for i in range (120)]
    x=list(range(120))
    fig=plt.figure(figsize=(20,8))
    plt.plot(x,y)
    xlable=['10点{}分'.format(i) for i in range (60)]
    xlable+=['11点{}分'.format(i) for i in range (60)]
    plt.xticks(x[::3],xlable[::3],rotation=45)
    plt.yticks(y)

    plt.show()

     添加描述的信息

    #添加描述
    plt.xlabel('时间',color='red',fontdict={'fontsize':20})
    plt.ylabel('温度')
    #设置标题
    plt.title('某日10点到12点间的温度变化情况')
    #添加网格
    plt.grid(alpha=0.1)
    #其他的和上面一样
    一个图中画多个图
    案例:根据实际情况统计出来你和你的同桌各自从11岁到30岁每年交的女朋友的数量如列表A和B,请在一个图中绘制出来该数据的折线图,以便于比较自己和同桌20年间的差异,同时分析每年交女朋友的数量走势
    A=[1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
    B=[1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]
    #代码
    import matplotlib.pyplot as plt
    import matplotlib as mpl
    #设置中文
    mpl.rcParams['font.sans-serif'] = ['FangSong'] # 用来正常显示中文标签
    mpl.rcParams['font.size'] = 16         # 设置字体大小
    #构建坐标
    #x轴表示年龄,Y轴表示女朋友的个数
    x=range(11,31)
    y_self = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
    y_d = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]
    #创建容器
    fig=plt.figure(figsize=(20,8))
    #画图
    plt.plot(x,y_self,label='自己',color='black',linestyle='-.')
    plt.plot(x,y_d,label='同桌')
    #设置刻度
    x_lables=['{}岁'.format(i) for i in x]
    plt.xticks(x,x_lables)
    plt.xlabel('年龄')
    plt.ylabel('女朋友的个数')
    plt.title('我和同桌历年交女朋友的个数对比')
    #设置了图例一定要加上这句话
    plt.legend()
    plt.grid(alpha=0.3)
    #标记点
    plt.annotate('最高点',xy=(23,6),xytext=(24,6),arrowprops={'arrowstyle':'<->'})
    plt.show()

     散点图

    问题:

    假设通过爬虫你获取了北京2016年3月份,10月份每天白天的最高气温(分别位于列表A和B中),要求找出气温随时间变化的规律

    import matplotlib.pyplot as plt
    import matplotlib as mpl
    #设置中文
    mpl.rcParams['font.sans-serif'] = ['FangSong'] # 用来正常显示中文标签
    mpl.rcParams['font.size'] = 16         # 设置字体大小
    #构建坐标
    x_3=list(range(1,32))
    y_3=[10, 16, 17, 14, 12, 10, 12, 6, 6, 7, 8, 9, 12, 15, 15, 17, 18, 21, 16, 16, 20, 13, 15, 15, 15, 18, 20, 22, 22, 22, 24]
    x_10=[i+50 for i in x_3]
    y_10=[26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12, 13, 6]
    #设置容器
    fig=plt.figure(figsize=(15,8))
    #绘图
    plt.scatter(x_3,y_3,label='3月份')
    plt.scatter(x_10,y_10,label='10月份')
    #设置轴刻度
    #集合
    y=set(y_3+y_10)
    min_y=min(y)
    max_y=max(y)
    plt.yticks(range(min_y,max_y+1))
    #x轴
    x=x_3+x_10
    x_lables=['3月{}日'.format(i) for i in range(1,32)]+['10月{}日'.format(i) for i in range(1,32)]
    plt.xticks(x[::2],x_lables[::2],rotation=45)
    plt.xlabel('日期')
    plt.ylabel('温度(C)')
    plt.title('北京2016年3月份到10月份的气温变化趋势图')
    plt.grid(alpha=0.3)
    plt.legend()
    plt.show
    #标记点
    plt.annotate('   最高点',xy=(53,28),arrowprops={'arrowstyle':'<->'})
    plt.show

    条形图

    假设获取到2019年内地电影票房前20的电影(列表X)和电影票房的数据(列表Y),那么如何更加直观的显示数据

    #代码

    import matplotlib.pyplot as plt
    import matplotlib as mpl
    #设置中文
    mpl.rcParams['font.sans-serif'] = ['FangSong'] # 用来正常显示中文标签
    mpl.rcParams['font.size'] = 16         # 设置字体大小
    #构建坐标
    movies = x= ['哪吒之魔童降世', '流浪地球', '复仇者联盟4:终局之战', '疯狂的外星人', '飞驰人生', '烈火英雄', '速度与激情:特别行动', '蜘蛛侠:英雄远征', '扫毒2天地对决', '大黄蜂', '惊奇队长', '比悲伤更悲伤的故事', '哥斯拉2:怪兽之王', '阿丽塔:战斗天使', '银河补习班', '狮子王', '反贪风暴4 ', '熊出没·原始时代', '使徒行者2:谍影行动', '大侦探皮卡丘']
    y = [49.04, 46.18, 42.05, 21.83, 17.03, 16.74, 14.16, 14.01, 12.85, 11.38, 10.25, 9.46, 9.27, 8.88, 8.64, 8.23, 7.88, 7.09, 6.92, 6.34]
    x=range(len(movies))
    #设置容器
    fig=plt.figure(figsize=(20,8),dpi=100)
    #绘图
    plt.barh(x,y,)
    #设置轴刻度
    plt.xticks(x,rotation=90)
    plt.xlabel('电影名称')
    plt.ylabel('电影票房')
    plt.title('2019年电影的票房')
    plt.grid(alpha=0.3)
    plt.legend()

     

  • 相关阅读:
    版本控制:SVN中Branch/tag的使用 -摘自网络
    安卓手机修改hosts攻略-摘自网络
    Web Api 2 怎么支持 Session
    几种判断asp.net中session过期方法的比较
    MSDN在线
    JS监听关闭浏览器事件
    VS调试Ajax
    SQL Server LEFT Functions
    Sql Server REPLACE函数的使用;SQL中 patindex函数的用法
    EXCEL公式测试使用Substitute
  • 原文地址:https://www.cnblogs.com/zhujiongning/p/11696322.html
Copyright © 2020-2023  润新知