matplotlib:使用函数绘制图表的组成元素和绘制简单图形

matplotlib:使用函数绘制图表的组成元素和绘制简单图形

一、使用函数绘制matplotlib的图表组成元素

1.1 绘制matplotlib图表组成元素

首先,我们了解一下matplotlib是如何组织内容的。在一个图形输出窗口中,底层是一个Figure实例,我们称其为画布
在画布上,自然是图形,这些图形就是Axes实例,Axes实例几乎包含了我们要介绍的matplotlib组成元素,我们利用matplotlib.pyplot模块的API中的函数

1.2 数据准备

我们导入NumPy和快速绘图模块pyplot

import matplotlib.pyplot as plt
import numpy as np

现在要定义一些所需要的数据:

x=np.linspace(0.5,3.5,100)
y=np.sin(x)
y1=np.random.randn(100)

【代码解释】

  • np.linspace(0.5,3.5,100):表示从0.5到3.5均匀取100个点。
  • np.random.randn(100):在标准正态中随机取100个数。

1.3 绘制matplotlib图表组成元素的函数用法

这些都是Python中matplotlib库里用于绘图和设置图表属性的重要函数,下面为你逐一介绍它们的用法和示例:

1. plt.plot()
  • 功能:用于绘制折线图,可将一系列的数据点用直线连接起来。
  • 调用签名
plt.plot(x,y,ls='-',lw=2,label="plot figure"
  • 参数说明
    位置参数:x,y轴上的数值。
    ls:折线图的线条风格,常见取值有 '-'(实线,默认值)、'--'(虚线)、 '-.'(点划线)、':'(点线)等。
    lw:线条宽度。
    label:线条名字。

【示例】

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-10,30,100000)
y=np.sin(x)
y1=np.random.randn(100000)

plt.plot(x,y,ls='-',lw='2',label="正弦曲线")
plt.legend()
plt.show()

【结果】
在这里插入图片描述

2. plt.scatter()
  • 功能:用于绘制散点图,将数据点以离散的点的形式展示。
  • 调用签名
plt.scatter(x,y,c="b",label="scatter figure")

-参数解释
位置参数:x,y轴上的数值。
label:线条名字。
c:表示散点图标记的颜色。
【示例】:

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-10,30,100)
y=np.sin(x)
y1=np.random.randn(100)

plt.scatter(x,y,c='b',label="sinx")
plt.legend()
plt.show()

【结果】
在这里插入图片描述

3. plt.xlim()
  • 功能:用于设置X轴的显示范围。
  • 调用签名
plt.xlim(xmin,xmax)

-参数解释
xmin:x轴上的最小值。
xmax: x轴上的最大值。
【示例】:

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-10,30,10000)
y=np.sin(x)
y1=np.random.randn(10000)

plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-20,30)
plt.ylim(-20,30)

plt.legend()
plt.show()

【结果】

在这里插入图片描述

4. plt.xlabel()
  • 功能:用于为X轴添加标签。
  • 调用签名
plt.xlabel(string)

【示例】:

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-10,30,10000)
y=np.sin(x)
y1=np.random.randn(10000)

plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-20,30)
plt.ylim(-20,30)

plt.xlabel("x-axis")
plt.legend()
plt.show()

【结果】
在这里插入图片描述

5. plt.grid()
  • 功能:用于在图表中添加网格线,方便查看数据点的位置。
  • 调用签名
plt.grid(linestyle=":",color="r")

-参数解释
linestyle:指定网格线的样式,'-‘表示实线(默认值),’–‘表示虚线,’-.‘表示点划线,’:'表示点线。
color:指定网格线的颜色,颜色名称字符串,如 ‘r’ 代表红色,‘b’ 代表蓝色,‘g’ 代表绿色,‘y’ 代表黄色等。十六进制颜色码,例如 ‘#FF0000’ 也表示红色。
【示例】:

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-10,30,10000)
y=np.sin(x)
y1=np.random.randn(10000)

plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)

plt.grid(linestyle=":",color="r")

plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.show()

【结果】
在这里插入图片描述

6. plt.axhline()&plt.axvline()
  • 功能:用于绘制一条水平参考线。
  • 调用签名
plt.axhline(y=0.0,c="r",ls="--",lw=2)
plt.axvline(x=4.0,c="r",ls="--",lw=2)

-参数解释
位置参数:h从y出发,v从x出发
【示例】:

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-10,30,10000)
y=np.sin(x)
y1=np.random.randn(10000)

plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)

plt.grid(linestyle=":",color="r")

plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')

plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.show()

【结果】
在这里插入图片描述

7. plt.axhspan()&plt.axvspan()
  • 功能:用于在图表中绘制一个垂直的区域。
  • 调用签名
plt.axvspan(xmin=1.0,xmax=2.0,facecolor="y",alpha=0.3)

-参数解释
facecolor:填充色
alpha:透明度
【示例】:

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-10,30,10000)
y=np.sin(x)
y1=np.random.randn(10000)

plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)

plt.grid(linestyle=":",color="r")

plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')

plt.axvspan(xmin=1.0,xmax=10.0,facecolor="y",alpha=0.3)
plt.axhspan(ymin=-1.0,ymax=1.0,facecolor="g",alpha=0.3)

plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.show()

【结果】

在这里插入图片描述

8. plt.annotate()
  • 功能:用于在图表中添加注释,可指向特定的数据点。
  • 调用签名
plt.annotate(text, xy, xytext=None, xycoords='data', textcoords=None, arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b"), annotation_clip=None, **kwargs)
plt.annotate(text, xy, xytext=None, weight='blod', textcoords=None, arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b"), annotation_clip=None)

-参数解释
text:注释文本
xy:备注点坐标
xytext:注视点的位置坐标
xycoords:注释文本粗细风格
arrowprops注释文本箭头的属性字典
annotation_clip:布尔值,控制注释是否会被坐标轴裁剪。True 表示会被裁剪,False 表示不会被裁剪,默认值取决于具体情况。

【示例】:

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-10,30,10000)
y=np.sin(x)


plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)

plt.grid(linestyle=":",color="r")

plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')

plt.axvspan(xmin=1.0,xmax=10.0,facecolor="y",alpha=0.3)
plt.axhspan(ymin=-1.0,ymax=1.0,facecolor="g",alpha=0.3)

plt.annotate("maximum",xy=(np.pi/2,1.0),xytext=((np.pi/2)+1.0,0.8),
             xycoords="data",
             weight="bold",
             color="b",
             arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b")
             )

plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.show()

【结果】
在这里插入图片描述

9. plt.text()
  • 功能:用于在图表中指定位置添加文本。
  • 调用签名
plt.text(x,y,string,weight="blod",color="b")

【示例】:

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-10,30,10000)
y=np.sin(x)


plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)

plt.grid(linestyle=":",color="r")

plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')

plt.axvspan(xmin=1.0,xmax=10.0,facecolor="y",alpha=0.3)
plt.axhspan(ymin=-1.0,ymax=1.0,facecolor="g",alpha=0.3)

plt.annotate("maximum",xy=(np.pi/2,1.0),xytext=((np.pi/2)+1.0,0.8),
             xycoords="data",
             weight="bold",
             color="b",
             arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b")
             )

plt.text(20,0.9,"y=sin(x)",weight="bold",color="b")

plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.show()

【结果】

在这里插入图片描述

10. plt.title()
  • 功能:用于为图表添加标题。
  • 调用签名
plt.title(string)

【示例】:

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-10,30,10000)
y=np.sin(x)


plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)

plt.grid(linestyle=":",color="r")

plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')

plt.axvspan(xmin=1.0,xmax=10.0,facecolor="y",alpha=0.3)
plt.axhspan(ymin=-1.0,ymax=1.0,facecolor="g",alpha=0.3)

plt.annotate("maximum",xy=(np.pi/2,1.0),xytext=((np.pi/2)+1.0,0.8),
             xycoords="data",
             weight="bold",
             color="b",
             arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b")
             )

plt.text(20,0.9,"y=sin(x)",weight="bold",color="b")

plt.title("y=sinx")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend()
plt.show()

【结果】
在这里插入图片描述

11. plt.legend()
  • 功能:用于为图表中的不同元素添加图例,方便区分。
  • 调用签名
plt.legend(loc="lower left")

-参数解释
loc:图中的地理位置
【示例】:

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-10,30,10000)
y=np.sin(x)


plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)

plt.grid(linestyle=":",color="r")

plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')

plt.axvspan(xmin=1.0,xmax=10.0,facecolor="y",alpha=0.3)
plt.axhspan(ymin=-1.0,ymax=1.0,facecolor="g",alpha=0.3)

plt.annotate("maximum",xy=(np.pi/2,1.0),xytext=((np.pi/2)+1.0,0.8),
             xycoords="data",
             weight="bold",
             color="b",
             arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b")
             )

plt.text(20,0.9,"y=sin(x)",weight="bold",color="b")

plt.title("y=sinx")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend(loc="lower left")
plt.show()

【结果】
在这里插入图片描述

1.4 合

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-10,30,10000)
y=np.sin(x)


plt.plot(x,y,ls='-',lw='2',label="sinx")
plt.xlim(-10,30)
plt.ylim(-2,2)


plt.scatter(x,y,c='b',label="sinx")

plt.grid(linestyle=":",color="r")

plt.axhline(y=0.0,c="r",ls='--',lw='2')
plt.axvline(x=4.0,c="r",ls='--',lw='2')

plt.axvspan(xmin=1.0,xmax=10.0,facecolor="y",alpha=0.3)
plt.axhspan(ymin=-1.0,ymax=1.0,facecolor="g",alpha=0.3)

plt.annotate("maximum",xy=(np.pi/2,1.0),xytext=((np.pi/2)+1.0,0.8),
             xycoords="data",
             weight="bold",
             color="b",
             arrowprops=dict(arrowstyle='->',connectionstyle="arc3",color="b")
             )

plt.text(20,0.9,"y=sin(x)",weight="bold",color="b")

plt.title("y=sinx")
plt.xlabel("x-axis")
plt.ylabel("y-axis")
plt.legend(loc="lower left")
plt.show()

二、使用统计函数绘制简单图形

2.1 函数bar()绘制柱状图

  • 函数功能:在x轴上绘制定性数据的分布特征。
  • 调用签名:
plt.bar(x,y)
plt.bar(x, height, width=0.8, bottom=None, align='center', data=None, **kwargs)
  • 参数解释
    • x:表示柱子的位置,可以是数字列表、数组或者 pandasSeries 对象。它定义了每个柱子在 x 轴上的中心位置。
    • height:表示柱子的高度,同样可以是数字列表、数组或者 pandasSeries 对象。它决定了每个柱子的垂直高度。
    • width(可选):柱子的宽度,默认值为 0.8。可以是单个数值,表示所有柱子的宽度;也可以是与 x 长度相同的数组,表示每个柱子的宽度。
    • bottom(可选):柱子底部的起始位置,默认值为 None,即从 0 开始。可以是单个数值或与 x 长度相同的数组。
    • align(可选):柱子的对齐方式,有 'center'(居中对齐,默认值)和 'edge'(边缘对齐)两种选项。当 align='edge' 时,还可以通过 width 的正负来控制柱子是向左还是向右对齐。
      • data(可选):如果提供了 data 参数,则 xheight 可以是 data 对象中的列名。
      • **kwargs:其他可选参数,用于设置柱子的外观,例如:
      • color:柱子的颜色,可以是单个颜色值或与 x 长度相同的颜色列表。
      • edgecolor:柱子边框的颜色。
      • linewidth:柱子边框的宽度。
      • tick_label:每个柱子对应的刻度标签。
      • hatch:柱子的填充样式,如 '/''\\''|' 等。

【示例】

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt


mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False

x=[1,2,3,4,5]
y=[5,5,4,6,6]

plt.bar(x,y,width=0.5,color="c",align="center",tick_label=["a","b","c","d","e"],hatch="/")

plt.xlabel("箱子编号")
plt.ylabel("箱子重量(kg)")
plt.title("示例")
plt.show()

【运行结果】
在这里插入图片描述

2.2 函数barh()绘制条形图

  • 函数功能:在y轴上绘制定性数据的分布特征。
  • 调用签名:
plt.barh(x,y)
plt.barh(y, width, height=0.8, left=None, align='center', **kwargs)
  • 参数解释

    • y
      - 类型:数值序列(如列表、数组等)。
      - 作用:确定每个水平柱子在 y 轴上的位置,类似于 plt.bar() 中的 x 参数,它定义了水平柱子中心对应的 y 轴坐标。

      • width
        • 类型:数值序列(如列表、数组等)。
        • 作用:表示每个水平柱子的宽度,也就是柱子在 x 轴方向上的延伸长度,对应于垂直柱状图里柱子的高度。
    • height

      • 类型:数值或与 y 长度相同的序列。
      • 作用:水平柱子的高度,即柱子在 y 轴方向上的厚度,默认值为 0.8。你既可以传入一个单一数值让所有柱子高度相同,也可以传入一个序列为每个柱子单独指定高度。
    • left

      • 类型:数值或与 y 长度相同的序列。
      • 作用:水平柱子左侧的起始位置,默认值为 None,即从 x 轴的 0 位置开始。同样,既可以是一个统一的数值,也可以为每个柱子分别指定起始位置。
    • align

      • 类型:字符串,可选值为 'center''edge'
      • 作用:指定柱子的对齐方式。'center'(默认值)表示柱子在 y 指定的位置处居中显示;'edge' 表示柱子的边缘与 y 指定的位置对齐。
    • **kwargs

      • 类型:关键字参数。
      • 作用:用于设置柱子的其他外观属性,常见的有:
        • color:柱子的颜色,可以是单个颜色值(如 'r' 代表红色),也可以是与 y 长度相同的颜色列表,为每个柱子指定不同颜色。
        • edgecolor:柱子边框的颜色。
        • linewidth:柱子边框的宽度。
        • tick_label:每个柱子对应的刻度标签,是一个字符串列表,用于在 y 轴上标记每个柱子的含义。
        • hatch:柱子的填充样式,例如 '/''\\''|' 等,能让柱子呈现不同的填充效果。

【 示例代码】

import matplotlib.pyplot as plt

# 定义数据
y = [1, 2, 3, 4, 5]
width = [5, 5, 4, 6, 6]

# 绘制水平柱状图
plt.barh(y, width, height=0.6, left=1, align='edge', color='g', tick_label=['A', 'B', 'C', 'D', 'E'])

# 添加标题和坐标轴标签
plt.title('水平柱状图示例')
plt.xlabel('数值')
plt.ylabel('类别')

# 显示图形
plt.show()

2.3. plt.hist() 绘制直方图

  • 函数功能:用于展示数据的分布情况,将数据划分为若干区间(bin),统计每个区间内数据的频数,并以柱状图的形式呈现。
  • 调用签名
plt.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs)
  • 参数解释
    • x
      • 类型:数值序列(如列表、数组等)。
      • 作用:输入的数据,是要进行直方图统计的数据集合。
    • bins
      • 类型:整数、序列或字符串。
      • 作用:指定直方图的区间数量。如果是整数,则表示将数据划分为指定数量的等宽区间;如果是序列,则该序列定义了区间的边界;如果是字符串,如 'auto',则会自动选择合适的区间数量。
    • range
      • 类型:元组(min, max)。
      • 作用:指定数据的取值范围,只有在该范围内的数据才会被统计,默认值为 None,表示使用数据的最小值和最大值作为范围。
    • density
      • 类型:布尔值。
      • 作用:如果为 True,则直方图的面积归一化为 1,即显示的是概率密度而不是频数;默认值为 False
    • weights
      • 类型:与 x 长度相同的数值序列。
      • 作用:为每个数据点分配权重,用于加权统计。默认值为 None,表示所有数据点权重相同。
    • cumulative
      • 类型:布尔值。
      • 作用:如果为 True,则绘制累积直方图;默认值为 False
    • bottom
      • 类型:数值或序列。
      • 作用:指定每个柱子的底部位置,类似于 plt.bar() 中的 bottom 参数。默认值为 None,表示从 0 开始。
    • histtype
      • 类型:字符串,可选值为 'bar''barstacked''step''stepfilled'
      • 作用:指定直方图的类型。'bar' 是普通的柱状图;'barstacked' 是堆叠柱状图;'step' 是阶梯状直方图;'stepfilled' 是填充的阶梯状直方图。
    • align
      • 类型:字符串,可选值为 'left''mid''right'
      • 作用:指定柱子的对齐方式。'mid' 是默认值,表示柱子居中对齐。
    • orientation
      • 类型:字符串,可选值为 'vertical''horizontal'
      • 作用:指定直方图的方向,'vertical' 表示垂直方向,'horizontal' 表示水平方向。
    • rwidth
      • 类型:数值。
      • 作用:柱子的相对宽度,取值范围在 0 到 1 之间,用于调整柱子之间的间距。默认值为 None,表示自动调整。
    • log
      • 类型:布尔值。
      • 作用:如果为 True,则使用对数刻度;默认值为 False
    • color
      • 类型:单个颜色值或颜色列表。
      • 作用:指定柱子的颜色。
    • label
      • 类型:字符串。
      • 作用:为直方图添加标签,用于图例显示。
    • stacked
      • 类型:布尔值。
      • 作用:如果为 True,则将多个数据集的直方图堆叠在一起;默认值为 False
    • **kwargs
      • 类型:关键字参数。
      • 作用:其他可选参数,用于设置柱子的外观,如 edgecolor(边框颜色)、linewidth(边框宽度)等。
  • 示例代码
import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
data = np.random.randn(1000)

# 绘制直方图
plt.hist(data, bins=20, color='b', edgecolor='k')

# 添加标题和坐标轴标签
plt.title('直方图示例')
plt.xlabel('数值')
plt.ylabel('频数')

# 显示图形
plt.show()

2.4 plt.pie() 绘制饼图

  • 函数功能:用于展示各部分数据占总体的比例关系,将一个圆划分为若干扇形,每个扇形的面积表示该部分数据占总体的比例。
  • 调用签名
plt.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=True, hatch=None, data=None)
  • 参数解释
    • x
      • 类型:数值序列(如列表、数组等)。
      • 作用:输入的数据,表示各部分的数值大小。这些数值将被归一化为占总体的比例。
    • explode
      • 类型:与 x 长度相同的数值序列。
      • 作用:指定每个扇形与圆心的偏移量,用于突出显示某些部分。默认值为 None,表示所有扇形都不偏移。
    • labels
      • 类型:字符串列表。
      • 作用:为每个扇形添加标签,用于说明各部分的含义。默认值为 None,表示不显示标签。
    • colors
      • 类型:颜色列表。
      • 作用:指定每个扇形的颜色。默认值为 None,表示使用默认的颜色循环。
    • autopct
      • 类型:字符串或函数。
      • 作用:用于在扇形上显示百分比。如果是字符串,如 '%1.1f%%',则表示保留一位小数显示百分比;如果是函数,则可以自定义百分比的显示格式。默认值为 None,表示不显示百分比。
    • pctdistance
      • 类型:数值。
      • 作用:百分比文本距离圆心的比例,取值范围在 0 到 1 之间。默认值为 0.6。
    • shadow
      • 类型:布尔值。
      • 作用:如果为 True,则为饼图添加阴影效果;默认值为 False
    • labeldistance
      • 类型:数值。
      • 作用:标签文本距离圆心的比例,取值范围在 0 到 1 之间。默认值为 1.1。
    • startangle
      • 类型:数值。
      • 作用:指定饼图的起始角度,以度为单位。默认值为 0,表示从 x 轴正方向开始。
    • radius
      • 类型:数值。
      • 作用:指定饼图的半径。默认值为 1。
    • counterclock
      • 类型:布尔值。
      • 作用:如果为 True,则按逆时针方向绘制饼图;默认值为 True
    • wedgeprops
      • 类型:字典。
      • 作用:用于设置扇形的属性,如 linewidth(边框宽度)、edgecolor(边框颜色)等。
    • textprops
      • 类型:字典。
      • 作用:用于设置文本(标签和百分比)的属性,如 fontsize(字体大小)、color(字体颜色)等。
    • center
      • 类型:元组(x, y)。
      • 作用:指定饼图的中心位置。默认值为 (0, 0)
    • frame
      • 类型:布尔值。
      • 作用:如果为 True,则绘制饼图的边框;默认值为 False
    • rotatelabels
      • 类型:布尔值。
      • 作用:如果为 True,则标签文本将根据扇形的角度旋转;默认值为 False
    • normalize
      • 类型:布尔值。
      • 作用:如果为 True,则将 x 中的数值归一化为占总体的比例;默认值为 True
    • hatch
      • 类型:字符串或字符串列表。
      • 作用:指定扇形的填充样式,如 '/''\\''|' 等。
    • data
      • 类型:字典或 pandasDataFrame
      • 作用:如果提供了 data 参数,则 xlabels 可以是 data 对象中的列名。
  • 示例代码
import matplotlib.pyplot as plt

# 定义数据
sizes = [15, 30, 45, 10]
labels = ['A', 'B', 'C', 'D']

# 绘制饼图
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)

# 使饼图为正圆形
plt.axis('equal')

# 添加标题
plt.title('饼图示例')

# 显示图形
plt.show()

2.5 plt.polar() 绘制极坐标图

  • 函数功能:用于在极坐标系统中绘制图形,适合展示具有周期性或方向性的数据。
  • 调用签名
plt.polar(theta, r, **kwargs)
  • 参数解释
    • theta
      • 类型:数值序列(如列表、数组等)。
      • 作用:表示极角,以弧度为单位。极角是从极轴(通常为 x 轴正方向)开始逆时针测量的角度。
    • r
      • 类型:数值序列(如列表、数组等)。
      • 作用:表示极径,即从极点(原点)到数据点的距离。
    • **kwargs
      • 类型:关键字参数。
      • 作用:用于设置图形的外观,如 color(颜色)、linestyle(线条样式)、marker(标记样式)等。
  • 示例代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
theta = np.linspace(0, 2 * np.pi, 100)
r = np.sin(2 * theta)

# 绘制极坐标图
plt.polar(theta, r, color='r')

# 添加标题
plt.title('极坐标图示例')

# 显示图形
plt.show()

2.6 plt.scatter() 绘制散点图

  • 函数功能:用于展示两个变量之间的关系,将数据点以散点的形式绘制在二维平面上。
  • 调用签名
plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
  • 参数解释
    • x
      • 类型:数值序列(如列表、数组等)。
      • 作用:表示数据点的 x 坐标。
    • y
      • 类型:数值序列(如列表、数组等)。
      • 作用:表示数据点的 y 坐标。
    • s
      • 类型:数值或数值序列。
      • 作用:指定散点的大小。如果是单个数值,则所有散点大小相同;如果是序列,则每个散点的大小由对应位置的值决定。默认值为 None,表示使用默认大小。
    • c
      • 类型:颜色、颜色序列或数值序列。
      • 作用:指定散点的颜色。如果是单个颜色值,则所有散点颜色相同;如果是颜色序列,则每个散点的颜色由对应位置的值决定;如果是数值序列,则会根据 cmap 参数指定的颜色映射将数值映射为颜色。默认值为 None,表示使用默认颜色。
    • marker
      • 类型:字符串。
      • 作用:指定散点的标记样式,如 'o'(圆形)、's'(正方形)、'^'(三角形)等。默认值为 'o'
    • cmap
      • 类型:字符串或 matplotlib.colors.Colormap 对象。
      • 作用:指定颜色映射,用于将数值序列 c 映射为颜色。默认值为 None,表示使用默认的颜色映射。
    • norm
      • 类型:matplotlib.colors.Normalize 对象。
      • 作用:用于将数值序列 c 归一化到 0 到 1 的范围,以便进行颜色映射。默认值为 None,表示使用线性归一化。
    • vminvmax
      • 类型:数值。
      • 作用:指定颜色映射的最小值和最大值。如果 c 是数值序列,则 vminvmax 用于确定颜色映射的范围。默认值为 None,表示使用 c 的最小值和最大值。
    • alpha
      • 类型:数值,取值范围在 0 到 1 之间。
      • 作用:指定散点的透明度,0 表示完全透明,1 表示完全不透明。默认值为 None,表示使用默认透明度。
    • linewidths
      • 类型:数值或数值序列。
      • 作用:指定散点边框的宽度。默认值为 None,表示使用默认宽度。
    • edgecolors
      • 类型:颜色、颜色序列或字符串。
      • 作用:指定散点边框的颜色。如果是单个颜色值,则所有散点边框颜色相同;如果是颜色序列,则每个散点边框的颜色由对应位置的值决定;如果是字符串 'face',则边框颜色与散点内部颜色相同。默认值为 None,表示使用默认边框颜色。
    • plotnonfinite
      • 类型:布尔值。
      • 作用:如果为 True,则绘制非有限值(如 NaNinf)的数据点;默认值为 False
    • data
      • 类型:字典或 pandasDataFrame
      • 作用:如果提供了 data 参数,则 xy 可以是 data 对象中的列名。
    • **kwargs
      • 类型:关键字参数。
      • 作用:其他可选参数,用于设置图形的属性,如 label(标签,用于图例显示)等。
  • 示例代码
import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
x = np.random.rand(100)
y = np.random.rand(100)
colors = np.random.rand(100)
sizes = 1000 * np.random.rand(100)

# 绘制散点图
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5)

# 添加标题和坐标轴标签
plt.title('散点图示例')
plt.xlabel('X')
plt.ylabel('Y')

# 显示图形
plt.show()

2.7 plt.stem() 绘制杆状图

  • 函数功能:用于绘制离散序列的数据,每个数据点用一个垂直的杆和一个标记表示,适合展示离散信号或序列。
  • 调用签名
plt.stem(x=None, y, linefmt=None, markerfmt=None, basefmt=None, bottom=0, label=None, use_line_collection=False, orientation='vertical', **kwargs)
  • 参数解释
    • x
      • 类型:数值序列(如列表、数组等)。
      • 作用:表示数据点的 x 坐标。如果不提供,则默认为 range(len(y))
    • y
      • 类型:数值序列(如列表、数组等)。
      • 作用:表示数据点的 y 坐标。

    2.8 plt.boxplot() 绘制箱线图

  • 函数功能:用于展示数据的分布情况,通过绘制箱子和须线,能直观地呈现数据的中位数、四分位数、异常值等统计信息,便于比较不同组数据的分布特征。
  • 调用签名
plt.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_ticks=True, autorange=False, zorder=None, data=None)
  • 参数解释
    • x
      • 类型:数组或数组序列。
      • 作用:输入的数据,可以是单个数据集,也可以是多个数据集组成的序列,用于绘制箱线图。
    • notch
      • 类型:布尔值。
      • 作用:如果为 True,则绘制带缺口的箱线图,缺口表示中位数的置信区间;默认值为 False
    • sym
      • 类型:字符串。
      • 作用:指定异常值的标记样式,如 'o' 表示圆形,'*' 表示星号等。默认值为 'b+',即蓝色的加号。
    • vert
      • 类型:布尔值。
      • 作用:如果为 True,则绘制垂直方向的箱线图;如果为 False,则绘制水平方向的箱线图。默认值为 True
    • whis
      • 类型:数值或序列。
      • 作用:确定须线的长度。默认值为 1.5,表示须线延伸到四分位数间距(IQR)的 1.5 倍处;也可以传入一个序列,指定上下须线的不同延伸倍数。
    • positions
      • 类型:数值序列。
      • 作用:指定箱线图在 x 轴(垂直箱线图)或 y 轴(水平箱线图)上的位置。默认值为 range(1, N+1),其中 N 是数据集的数量。
    • widths
      • 类型:数值或数值序列。
      • 作用:指定箱线图的宽度。如果是单个数值,则所有箱线图宽度相同;如果是序列,则每个箱线图的宽度由对应位置的值决定。
    • patch_artist
      • 类型:布尔值。
      • 作用:如果为 True,则使用 Patch 对象绘制箱子,便于设置箱子的填充颜色等属性;默认值为 False
    • showfliers
      • 类型:布尔值。
      • 作用:如果为 True,则显示异常值;默认值为 True
    • labels
      • 类型:字符串列表。
      • 作用:为每个箱线图添加标签,用于说明不同组数据的含义。
    • boxprops
      • 类型:字典。
      • 作用:用于设置箱子的属性,如 color(颜色)、linewidth(边框宽度)等。
    • flierprops
      • 类型:字典。
      • 作用:用于设置异常值的属性,如 markerfacecolor(标记填充颜色)、markeredgecolor(标记边框颜色)等。
    • medianprops
      • 类型:字典。
      • 作用:用于设置中位数线的属性,如 color(颜色)、linewidth(线宽)等。
    • meanprops
      • 类型:字典。
      • 作用:用于设置均值线的属性(如果显示均值),如 color(颜色)、linestyle(线条样式)等。
    • capprops
      • 类型:字典。
      • 作用:用于设置须线端点(帽)的属性,如 color(颜色)、linewidth(线宽)等。
    • whiskerprops
      • 类型:字典。
      • 作用:用于设置须线的属性,如 color(颜色)、linestyle(线条样式)等。
  • 示例代码
import matplotlib.pyplot as plt
import numpy as np

# 生成三组随机数据
data1 = np.random.normal(100, 10, 200)
data2 = np.random.normal(90, 20, 200)
data3 = np.random.normal(80, 30, 200)
data = [data1, data2, data3]

# 绘制箱线图
plt.boxplot(data, labels=['A', 'B', 'C'])

# 添加标题和坐标轴标签
plt.title('箱线图示例')
plt.ylabel('数值')

# 显示图形
plt.show()

2.9 plt.errorbar() 绘制误差线图

  • 函数功能:用于展示数据点及其误差范围,在数据存在测量误差或不确定性时非常有用,能直观地反映数据的可靠性。
  • 调用签名
plt.errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None, capsize=None, barsabove=False, lolims=False, uplims=False, xlolims=False, xuplims=False, errorevery=1, capthick=None, *, data=None, **kwargs)
  • 参数解释
    • x
      • 类型:数值序列(如列表、数组等)。
      • 作用:表示数据点的 x 坐标。
    • y
      • 类型:数值序列(如列表、数组等)。
      • 作用:表示数据点的 y 坐标。
    • yerr
      • 类型:数值、数值序列或二维数组。
      • 作用:指定 y 方向的误差范围。如果是单个数值,则所有数据点的误差相同;如果是序列,则每个数据点的误差由对应位置的值决定;如果是二维数组,则分别表示上下误差。
    • xerr
      • 类型:数值、数值序列或二维数组。
      • 作用:指定 x 方向的误差范围,用法与 yerr 类似。
    • fmt
      • 类型:字符串。
      • 作用:指定数据点的标记样式和线条样式,如 'ro-' 表示红色圆形标记并用实线连接。
    • ecolor
      • 类型:颜色。
      • 作用:指定误差线的颜色。默认值为 None,表示使用与数据点相同的颜色。
    • elinewidth
      • 类型:数值。
      • 作用:指定误差线的宽度。默认值为 None,表示使用默认宽度。
    • capsize
      • 类型:数值。
      • 作用:指定误差线端点帽的大小。默认值为 None,表示使用默认大小。
    • barsabove
      • 类型:布尔值。
      • 作用:如果为 True,则误差线绘制在数据点之上;默认值为 False
    • lolimsuplimsxlolimsxuplims
      • 类型:布尔值。
      • 作用:用于指定误差范围是否为单边限制,如 lolims=True 表示 y 方向的下误差为单边限制。
    • errorevery
      • 类型:整数或序列。
      • 作用:指定每隔多少个数据点绘制误差线。如果是整数,则每隔指定数量的点绘制;如果是序列,则只在序列指定的位置绘制。
    • capthick
      • 类型:数值。
      • 作用:指定误差线端点帽的厚度。默认值为 None,表示使用默认厚度。
  • 示例代码
import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])
y_err = np.array([0.5, 1, 1.5, 2, 2.5])

# 绘制误差线图
plt.errorbar(x, y, yerr=y_err, fmt='o', color='b', ecolor='r', capsize=5)

# 添加标题和坐标轴标签
plt.title('误差线图示例')
plt.xlabel('X')
plt.ylabel('Y')

# 显示图形
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值