• Matplotlib基础


    Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。

    Matplotlib 可以用来绘制各种静态,动态,交互式的图表。

    一.折线图

    Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API

    plot() 函数是绘制二维图形的最基本函数

    多条曲线不指定颜色时,会自动选择不同颜色。

    1. import matplotlib.pyplot as plt #引入pyplot模块,并取别名plt
    2. input_value = [0, 1, 2, 3, 4, 5]
    3. squares = [0, 1, 4, 9, 16, 25]
    4. squares1 = [0, 2, 4, 6, 8, 10]
    5. plt.plot(input_value, squares, marker = 'o', linewidth=5) #linewidth决定线条的粗细
    6. plt.plot(input_value, squares1, marker = 'v', linewidth=1) #marker参数定义数据点的形状
    7. #设置图表标题,坐标轴加标签
    8. plt.title("Square Numbers",fontsize=24) #fontsize决定文字大小
    9. plt.xlabel("Value",fontsize=14) #xlabel为x轴设置标题
    10. plt.ylabel("Square of Value",fontsize=14) #ylabel为y轴设置标题
    11. #设置刻度标记大小
    12. plt.tick_params(axis='both',labelsize=14)
    13. plt.show()
    '
    运行

    以下为markerke可设置的值

    fmt 参数

    fmt 参数定义了基本格式,即 '[marker][line][color]'

    plt.plot(ypoints, 'o:r')

    标记大小与颜色

    可以自定义标记的大小与颜色,使用的参数分别是:

    • markersize,简写为 ms:定义标记的大小。
    • markerfacecolor,简写为 mfc:定义标记内部的颜色。
    • markeredgecolor,简写为 mec:定义标记边框的颜色。
    1. import matplotlib.pyplot as plt
    2. ypoints = [6, 2, 13, 10]
    3. plt.plot(ypoints, 'o:r', ms=10, mec = 'g', mfc = 'b')
    4. plt.show()
    '
    运行

     grid() 方法来设置图表中的网格线

    参数说明:

    • b:可选,默认为 None,可以设置布尔值,true 为显示网格线,false 为不显示,如果设置 **kwargs 参数,则值为 true
    • which:可选,可选值有 'major'、'minor' 和 'both',默认为 'major',表示应用更改的网格线。
    • axis:可选,设置显示哪个方向的网格线,可以是取 'both'(默认),'x' 或 'y',分别表示两个方向,x 轴方向或 y 轴方向
    • **kwargs:可选,设置网格样式,可以是 color='r', linestyle='-' 和 linewidth=2,分别表示网格线的颜色,样式和宽度
    1. import matplotlib.pyplot as plt
    2. ypoints = [6, 2, 13, 10]
    3. plt.plot(ypoints, 'o:r', ms=10, mec = 'g', mfc = 'b')
    4. plt.grid(b=None, which='major', axis='both')
    5. plt.show()

    subplot()  方法绘制多个子图 

    subplot(nrows, ncols, index, **kwargs) subplot(pos, **kwargs) subplot(**kwargs) subplot(ax)
    以上函数将整个绘图区域分成 nrows 行和 ncols 列,然后从左到右,从上到下的顺序对每个子区域进行编号 1...N ,左上的子区域的编号为 1、右下的区域编号为 N,编号可以通过参数 index 来设置。

    1. import matplotlib.pyplot as plt
    2. #plot 1:
    3. xpoints = [0, 6]
    4. ypoints = [0, 100]
    5. plt.subplot(1, 2, 1)
    6. plt.plot(xpoints,ypoints)
    7. plt.title("plot 1")
    8. #plot 2:
    9. x = [1, 2, 3, 4]
    10. y = [1, 4, 9, 16]
    11. plt.subplot(1, 2, 2)
    12. plt.plot(x,y)
    13. plt.title("plot 2")
    14. plt.suptitle("RUNOOB subplot Test")
    15. plt.show()
    '
    运行

      二.散点图

    1. import matplotlib.pyplot as plt
    2. input_value = [0, 1, 2, 3, 4, 5]
    3. squares = [0, 1, 4, 9, 16, 25]
    4. plt.scatter(input_value, squares, s=100) #scatter可绘制点,s可决定大小
    5. #设置图表标题,坐标轴加标签
    6. plt.title("Square Numbers", fontsize=24) #fontsize决定文字大小
    7. plt.xlabel("Value", fontsize=14) #xlabel为x轴设置标题
    8. plt.ylabel("Square of Value", fontsize=14)#ylabel为y轴设置标题
    9. #设置刻度标记大小
    10. plt.tick_params(axis='both', which='major', labelsize=14)
    11. plt.show()
    '
    运行

    三.柱状图

    bar() 方法来绘制柱形图,垂直方向的柱形图可以使用 barh() 方法

    matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

    参数说明:

    x:浮点型数组,柱形图的 x 轴数据。

    height:浮点型数组,柱形图的高度。

    width:浮点型数组,柱形图的宽度。barh() 方法使用 height 设置 

    bottom:浮点型数组,底座的 y 坐标,默认 0。

    align:柱形图与 x 坐标的对齐方式,'center' 以 x 位置为中心,这是默认值。 'edge':将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align='edge'。

    **kwargs::其他参数。

    1. import matplotlib.pyplot as plt
    2. x = ["A", "B", "C", "D"]
    3. y = [12, 22, 6, 18]
    4. plt.barh(x, y, height = 0.1)
    5. plt.show()
    '
    运行

    四.饼状图

    pyplot 中的 pie() 方法来绘制饼图

    matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, rotatelabels=False, *, normalize=None, data=None)[source]

    参数说明:

    x:浮点型数组,表示每个扇形的面积。

    explode:数组,表示各个扇形之间的间隔,默认值为0。

    labels:列表,各个扇形的标签,默认值为 None。

    colors:数组,表示各个扇形的颜色,默认值为 None。

    autopct:设置饼图内各个扇形百分比显示格式,%d%% 整数百分比,%0.1f 一位小数, %0.1f%% 一位小数百分比, %0.2f%% 两位小数百分比。

    labeldistance:标签标记的绘制位置,相对于半径的比例,默认值为 1.1,如 <1则绘制在饼图内侧。

    pctdistance::类似于 labeldistance,指定 autopct 的位置刻度,默认值为 0.6。

    shadow::布尔值 True 或 False,设置饼图的阴影,默认为 False,不设置阴影。

    radius::设置饼图的半径,默认为 1。

    startangle::起始绘制饼图的角度,默认为从 x 轴正方向逆时针画起,如设定 =90 则从 y 轴正方向画起。

    counterclock:布尔值,设置指针方向,默认为 True,即逆时针,False 为顺时针。

    wedgeprops :字典类型,默认值 None。参数字典传递给 wedge 对象用来画一个饼图。例如:wedgeprops={'linewidth':5} 设置 wedge 线宽为5。

    textprops :字典类型,默认值为:None。传递给 text 对象的字典参数,用于设置标签(labels)和比例文字的格式。

    center :浮点类型的列表,默认值:(0,0)。用于设置图标中心位置。

    frame :布尔类型,默认值:False。如果是 True,绘制带有表的轴框架。

    rotatelabels :布尔类型,默认为 False。如果为 True,旋转每个 label 到指定的角度。

    1. import matplotlib.pyplot as plt
    2. y = [35, 25, 25, 15]
    3. plt.pie(y,
    4. labels=['A','B','C','D'], # 设置饼图标签
    5. colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9"], # 设置饼图颜色
    6. explode=(0, 0.2, 0, 0), # 第二部分突出显示,值越大,距离中心越远
    7. autopct='%.2f%%', # 格式化输出百分比
    8. )
    9. plt.title("RUNOOB Pie Test")
    10. plt.show()
    '
    运行

    五. 自动计算以及对绘图的处理

    1. import matplotlib.pyplot as plt
    2. input_value = list(range(1, 1001))
    3. squares = [x**2 for x in input_value]
    4. """
    5. scatter可绘制点
    6. c决定颜色(可使用颜色英文首字母或者全拼,也可使用rgb(rgb是0~1间的小数数组))
    7. edgecolors决定数据点的轮廓
    8. s可决定大小
    9. """
    10. plt.scatter(input_value, squares, c='r', edgecolors='none', s=10)
    11. #设置图表标题,坐标轴加标签
    12. plt.title("Square Numbers", fontsize=24) #fontsize决定文字大小
    13. plt.xlabel("Value", fontsize=14) #xlabel为x轴设置标题
    14. plt.ylabel("Square of Value", fontsize=14)#ylabel为y轴设置标题
    15. #设置刻度标记大小
    16. plt.tick_params(axis='both', which='major', labelsize=14)
    17. #设置坐标轴取值范围
    18. plt.axis([0, 1100, 0, 1100000])
    19. plt.show()
    '
    运行

    六.颜色隐射

    1. import matplotlib.pyplot as plt
    2. input_value = list(range(1, 1001))
    3. squares = [x**2 for x in input_value]
    4. """
    5. 颜色隐射就是渐变色
    6. 将参数c设置为y轴列表,参数cmap决定哪个颜色
    7. """
    8. plt.scatter(input_value, squares, c=squares, cmap=plt.cm.Blues , edgecolors='none', s=10)
    9. #设置图表标题,坐标轴加标签
    10. plt.title("Square Numbers", fontsize=24) #fontsize决定文字大小
    11. plt.xlabel("Value", fontsize=14) #xlabel为x轴设置标题
    12. plt.ylabel("Square of Value", fontsize=14)#ylabel为y轴设置标题
    13. #设置刻度标记大小
    14. plt.tick_params(axis='both', which='major', labelsize=14)
    15. #设置坐标轴取值范围
    16. plt.axis([0, 1100, 0, 1100000])
    17. plt.show()
    '
    运行

     七.下载

    最后加以下代码即可,下载地址是当前过程文件的地址,参数就是图片名称

    plt.savefig('squares.png')

  • 相关阅读:
    Babylonjs学习笔记(一)——搭建基础场景
    2023CCPC哈尔滨站
    KubeSphere 在互联网医疗行业的应用实践
    JSP include能包含html页面吗?
    MD5加密算法
    Centos7.9安装Git
    一站式数字藏品收款系统开发解决方案
    每日复盘-202406019
    Web开发后端总结
    XCZU19EG_FFVC1760芯片的封装和管脚
  • 原文地址:https://blog.csdn.net/weixin_44113772/article/details/127106619