matplotlib简单应用

折线图

  • 第一个程序

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

    在这里插入图片描述

  • 调整x,y轴的坐标刻度和图片的保存

    		from matplotlib import pyplot as plt
    		
    		x=range(2,26,2)
    		y=[15,13,14.5,17,20,25,26,26,24,22,18,15]
    		#设置图片大小
    		#figsize=(20,8)调整图片的宽=20、高=8,dpi调整图片的清晰度
    		plt.figure(figsize=(20,8),dpi=80)
    		#绘图
    		plt.plot(x,y)
    		#绘制x,y轴的刻度
    		#plt.xticks(range(2,25))绘把x轴绘制成2~24步长为1
    		#_xtick_labels=[i/2 for i in range(4,49)] 使用推导式计算x轴
    		plt.xticks(x)
    		plt.yticks(range(min(y),max(y)+1))
    		#保存
    		plt.savefig('./t1.png')
    		#展示图形
    		plt.show()
    		```
    
    
    
  • 练习

    from matplotlib import pyplot as plt
    
    x=range(11,31)
    y1=[1,0,1,2,4,3,2,2,2,3,4,5,6,5,4,3,3,1,1,1]
    y2=[2,3,4,5,1,2,3,4,1,1,2,3,4,0,1,2,8,5,1,1]
    
    plt.figure(figsize=(10,10),dpi=80)
    
    plt.xticks(x)
    plt.yticks(range(min(y1),max(y1)+1))
    
    
    plt.plot(x,y1,label="XiaoMing",color='orange',linestyle='--')
    plt.plot(x,y2,label="XiaoBai",linestyle=":")
    
    plt.title("The Number Of Girlfriends Every Year")
    plt.xlabel("A Particular Year")
    plt.ylabel("Number")
    
    #绘制网格  alpah设置网格的透明度
    plt.grid(alpha=0.4)
    #添加图例:右上角表示信息(先在plot中添加label参数)
    plt.legend()
    
    plt.show()
    
    

    在这里插入图片描述

散点图

  • 第一个程序

    from matplotlib import pyplot as plt
    import  random
    x1=range(1,32)
    x2=range(51,82)
    y1=[]
    y2=[]
    for i in range(1,32):
       y1.append(random.randint(10,25))
       y2.append(random.randint(5,30))
    
    plt.figure(figsize=(20,10),dpi=80)
    #调整x轴
    _x=list(x1)+list(x2)
    
    _xtick_label=["3.{}".format(i) for i in x1]
    _xtick_label+=['10.{}'.format(i-50) for i in x2]
    plt.xticks(_x[::3],_xtick_label[::3],rotation=45)
    
    #绘制散点图
    plt.scatter(x1,y1,label='March')
    plt.scatter(x2,y2,label='October')
    
    #添加描述信息
    plt.title("Temperatures in March and October")
    plt.xlabel('data')
    plt.ylabel('Temperature')
    #添加图例
    plt.legend(loc='upper left')
    
    plt.show()
    

    在这里插入图片描述

条形图

  • 竖条形图

    '''
    假设你获得了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何
    更加直观的展示该数据?
    '''
    from matplotlib import pyplot as plt, font_manager
    from pylab import *
    #设置中文显示
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    
    a = ['战狼2', '速度与激情8', '羞羞的铁拳', '前任3:再见前任', '功夫瑜伽',
         '西游伏妖篇', '变形金刚5:最后的骑士', '芳华', '摔跤吧!爸爸', '寻梦环游记',
         '加勒比海盗5:死无对证', '金刚:骷髅岛', '极限特工:终极回归', '生化危机6:终章',
         '乘风破浪', '神偷奶爸3', '智取威虎山', '蜘蛛侠:英雄归来', '大闹天竺', '雷神3:诸神黄昏']
    
    b = [56.39, 26.49, 21.9, 19.26, 17.53, 16.49, 15.45, 14.11, 12.96, 12.02,
         11.8, 11.61, 11.28, 11.12, 10.38, 10.3, 8.74, 7.67, 7.55, 7.36
         ]
    
    plt.figure(figsize=(20,15), dpi=80)
    # 条形图b
    # width调整线条宽度
    plt.bar(a,b,width=0.3)
    # 设置x轴
    x_t = list(range(len(a)))
    plt.xticks(x_t,a,rotation=90)
    
    plt.show()     
    

    在这里插入图片描述

  • 横条形图

    '''
    假设你获得了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何
    更加直观的展示该数据?
    '''
    from matplotlib import pyplot as plt, font_manager
    from pylab import *
    #设置中文显示
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    
    a = ['战狼2', '速度与激情8', '羞羞的铁拳', '前任3:再见前任', '功夫瑜伽',
         '西游伏妖篇', '变形金刚5:最后的骑士', '芳华', '摔跤吧!爸爸', '寻梦环游记',
         '加勒比海盗5:死无对证', '金刚:骷髅岛', '极限特工:终极回归', '生化危机6:终章',
         '乘风破浪', '神偷奶爸3', '智取威虎山', '蜘蛛侠:英雄归来', '大闹天竺', '雷神3:诸神黄昏']
    
    b = [56.39, 26.49, 21.9, 19.26, 17.53, 16.49, 15.45, 14.11, 12.96, 12.02,
         11.8, 11.61, 11.28, 11.12, 10.38, 10.3, 8.74, 7.67, 7.55, 7.36
         ]
    
    plt.figure(figsize=(20,15), dpi=80)
    # 条形图b
    # width调整线条宽度
    plt.barh(a,b,height=0.3)
    # 设置y轴
    y_t = list(range(len(a)))
    plt.yticks(y_t,a)
    #添加网格
    plt.grid()
    plt.show()
    

    在这里插入图片描述

  • 绘制多个条形图

    from matplotlib import pyplot as plt
    from pylab import *
    #设置中文显示
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    x=['猩球崛起3:终极之战','敦刻尔克','蜘蛛侠:英雄归来','战狼2']
    
    y1=[15746,312,4497,319]
    y2=[12357,147,2045,168]
    y3=[2358,399,2358,262]
    
    plt.figure(figsize=(20,10),dpi=80)
    
    #绘制多个条形图需要移动x的值,防止重叠
    x1=list(range(len(x)))
    x2=[i+0.2 for i in x1]
    x3=[i+0.2 for i in x2]
    
    plt.bar(x1,y1,width=0.2,label='9月14日')
    plt.bar(x2,y2,width=0.2,label='9月15日')
    plt.bar(x3,y3,width=0.2,label='9月16日')
    
    
    plt.xticks(x2,x)
    
    #设置图例
    plt.legend()
    
    plt.show()
    

直方图

  • 绘制直方图

    '''
    假设你获得了250部电影的时长,希望统出这些电影市场的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率等),你应该如何呈现这些数据。
    '''
    from matplotlib import pyplot as plt
    import  random
    
    a=[random.randint(100,140) for i in range(250)]
    
    #组数=极差/组距
    d=5 #组距
    num_bine=(max(a)-min(a))//d #组数
    #频率直方图需要+density=1
    plt.hist(a,num_bine,density=1)
    
    #设置x的度数
    #max(a)+d防止取不到最大值
    plt.xticks(range(min(a),max(a)+d,d),rotation=90)
    
    plt.grid()
    plt.show()
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值