• 零基础学Python:Matplotlib用法


    在这里插入图片描述

    前言: 📢📢📢
    🏅🏅🏅作者简介:是Dream呀,华为云享专家、CSDN原力计划作者、Python领域优质创作者,专注分享Python领域原创系列文章。
    🌻🌻🌻热门专栏:【零基础学Python
    本课程是针对Python入门&进阶打造的一全套课程,在这里,我将会一 一更新Python基础语法、Python爬虫、Web开发、 Django框架、Flask框架以及人工智能相关知识,帮助你成为Python大神,如果你喜欢的话就抓紧收藏订阅起来吧~💘💘💘
    🍋🍋🍋如果对学习没有自制力或者没有一起学习交流的动力,欢迎私信我或者文末添加vx,拉你进群,群内有行业大佬帮大家解答疑问,我们一起学习,群内定期还会有抽奖活动和红包相送嗷,快来进入我们吧~
    💕 入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
    💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺

    数据可视化是指通过图表形式展现数据,揭示数据背后的规律。 Matplotlib是可视化数据的最基本库。
    导入Matplotlib 一般语句使用如下:

    一、初识matplotlib

    import matplotlib.pyplot as plt
    
    • 1

    使用matplotlib进行做图:

    import matplotlib.pyplot as plt
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.set(xlim=[0.5, 4.5], ylim=[-2, 8], title='An Example Axes',ylabel='Y-Axis',xlabel='X-Axis')
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    二、线形图

    线形图简单容易绘制,matplotlib提供plot()函数绘制一系列点,用线将其连起来。

    import numpy as np
    import matplotlib.pyplot as plt
    x = np.linspace(0,np.pi)
    y_sin = np.sin(x)
    y_cos = np.cos(x)
    
    fig = plt.figure()
    # add_subplot(221)前面两个参数确定了面板的划分,第三个参数确定表示第几个Axis
    ax1 = fig.add_subplot(221)
    ax2 = fig.add_subplot(222)
    ax3 = fig.add_subplot(224)
    
    ax1.plot(x,y_sin)
    ax2.plot(x,y_sin,'go--',linewidth=2,markersize=12)
    ax3.plot(x,y_cos,color='red',marker='+',linestyle='dashed')  # 颜色,标记,线形
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

    plot()函数用法

    格式:plt.plot(x, y, ls=‘-’, lw=2, label=‘xxx’, color=‘g’ )

    • x: x轴上的值
    • y: y轴上的值
    • ls:线条风格 (linestyle)
    • lw:线条宽度 (linewidth)
    • label:标签文本

    注意:对于线条颜色,必须写上color=‘red’,而不是只写color=‘’,不然会报错SyntaxError: positional argument follows keyword argument,意思是参数位置不正确导致的错误,也就是说color=''没有默认的颜色

    三、散点图

    散点图用于表示多个变量的相关性。Matplotlib提供scatter()函数绘制散点图。
    random.rand():这个函数的参数是数组的维度,取值范围是 [0,1)

    import matplotlib.pyplot as plt
    import numpy as np
    N = 50
    plt.scatter(np.random.rand(N)*50,np.random.rand(N)*50,c='r',s=50,alpha=0.5)
    plt.scatter(np.random.rand(N)*50,np.random.rand(N)*50,c='g',s=50,alpha=0.5)
    plt.scatter(np.random.rand(N)*50,np.random.rand(N)*50,c='b',s=50,alpha=0.5)
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    scatter()函数用法

    matplotlib.pyplot.scatter(x, 
    	y, 
    	s=20, 
    	c='b', 
    	marker='o', 
    	cmap=None, 
    	norm=None, 
    	vmin=None, 
    	vmax=None, 
    	alpha=None, 
    	linewidths=None, 
    	verts=None, 
    	hold=None, 
    	**kwargs)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • x,y:表示的是shape大小为(n,)的数组,也就是我们即将绘制散点图的数据点,输入数据。

    • s:表示的是大小,是一个标量或者是一个shape大小为(n,)的数组,可选,默认20。

    • c:表示的是色彩或颜色序列,可选,默认蓝色’b’。但是c不应该是一个单一的RGB数字,也不应该是一个RGBA的序列,因为不便区分。c可以是一个RGB或RGBA二维行数组。
      在这里插入图片描述

    • marker:MarkerStyle,表示的是标记的样式,可选,默认’o’。
      在这里插入图片描述

    • cmap:Colormap,标量或者是一个colormap的名字,cmap仅仅当c是一个浮点数数组的时候才使用。如果没有申明就是image.cmap,可选,默认None。

    • norm:Normalize,数据亮度在0-1之间,也是只有c是一个浮点数的数组的时候才使用。如果没有申明,就是默认None。

    • vmin,vmax:标量,当norm存在的时候忽略。用来进行亮度数据的归一化,可选,默认None。

    • alpha:标量,0-1之间,可选,默认None。

    • linewidths:也就是标记点的长度,默认None。

    四、饼状图

    饼状图是被用于分成若干部分的圆表示部分在整体中所占的比例。Matplotlib中提供pie()函数来绘制饼状图

    import matplotlib.pyplot as plt
    import numpy as np
    labels = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun']
    data = np.random.rand(7)*100
    print(data)
    plt.pie(data,labels=labels,autopct='%1.1f%%')  # labels :(每一块)饼图外侧显示的说明文字
    plt.axis('equal')  # 该行代码使饼图长宽相等
    plt.legend()  # 添加图例
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    pie()函数用法

    pie函数的语法和参数含义如下:

    pie(x, explode=None, labels=None, colors=None,
      autopct=None, pctdistance=0.6, shadow=False,
      labeldistance=1.1, startangle=None,
      radius=None, counterclock=True, wedgeprops=None,       
      textprops=None, center=(0, 0), frame=False)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    x:指定绘图的数据。
    explode:指定饼图某些部分的突出显示,即呈现爆炸式。
    labels:为饼图添加标签说明,类似于图例说明。
    colors:指定饼图的填充色。
    autopct:自动添加百分比显示,可以采用格式化的方法显示。控制饼图内百分比设置,可以使用format字符串或者format function;‘%1.1f’:指小数点后保留一位有效数值
    pctdistance:设置百分比标签与圆心的距离。
    shadow:是否添加饼图的阴影效果。
    labeldistance:设置各扇形标签(图例)与圆心的距离。
    startangle:设置饼图的初始摆放角度。 radius:设置饼图的半径大小。
    counterclock:是否让饼图按逆时针顺序呈现。
    wedgeprops:设置饼图内外边界的属性,如边界线的粗细、颜色等。
    textprops:设置饼图中文本的属性,如字体大小、颜色等。
    center:指定饼图的中心点位置,默认为原点。
    frame:是否要显示饼图背后的图框,如果设置为True的话,需要同时控制图框x轴、y轴的范围和饼图的中心位置。

    五、直方图

    直方图用于显示每个变量出现的频率,与条形图有些类似。但其含义不同,条形图用于比较类别的值,而直方图用于显示变量的分布。Matplotlib提供hist()函数绘制直方图

    import matplotlib.pyplot as plt
    import numpy as np
    data = [np.random.randint(0,n,n) for n in [3000, 4000, 5000]]
    print(data)
    labels = ['3K', '4K', '5K']
    bins = [0, 100, 500, 500, 5000, 3000, 4000, 5000]
    plt.hist(data, bins=8, label=labels)
    plt.legend()
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    hist()函数用法

    hist(x,bins=None,range=None,density=None,weights=None,cumulative=False,bottom=None,
    histstype='bar',align='mid',orientation='vertical',rwidth=None,log=False,label=None,
    stacked=False,normed=None,*,data=None,**kwargs)
    
    • 1
    • 2
    • 3

    x:表示x轴的数据,可以为单个数组或多个数组的序列
    bins:表示矩形条的个数,默认为10
    range:表示数据的范围,若没有提供range参数,则数据范围为(x.min(),x.max())
    cumulative:表示是否计算累积频数或频率
    histtype:表示直方图的类型,支持’bar’,‘barstacked’,‘step’,‘stepfilled’四种取值,其中’bar’为默认值,代表传统的直方图;‘barstacked’代表堆积直方图,’'step’代表未填充的线条直方图;'stepfilled’代表填充的线条直方图
    align:表示矩形条边界的对齐方式,可设置为’left’,‘mid’,‘right’默认为’mid’,
    orientation:表示矩形条的摆放方式,默认为’vertical’,即垂直方向
    rwidth:表示矩形条宽度的百分比,默认为0.若histtype的值为’step’或’stepfilled’,则直接忽略rwidth参数的值
    stacked:表示是否将多个矩形条以堆积形式摆放

  • 相关阅读:
    【读书笔记】【Effective STL】在程序中使用 STL
    拥抱 OpenAPI 3:springdoc-openapi 食用指南
    第三章 Flink基础理论之运行模式
    java计算机毕业设计菲特尼斯健身管理系统设计与实现源码+mysql数据库+系统+lw文档+部署
    JAVA问题总结1(框架理解 + 注解问题)
    设备通过国标GB28181接入EasyCVR平台,出现断流情况该如何解决?
    2、k-means聚类算法sklearn与手动实现
    【Selenium2+python】自动化unittest生成测试报告
    MyCat分片规则
    19 04-读取DTC快照信息
  • 原文地址:https://blog.csdn.net/weixin_51390582/article/details/126694102