04. Matplolib库的使用
一、Matplotlib库简介
Matplotlib 是一个用于制作出版级质量图表的桌面绘图包。该项目由 John Hunter 于 2002 年启动,其目的是为 Python 构建一个 MATLAB 式的绘图接口。随后,matplotlib 和 IPython 社区进行合作,对从 IPython 终端(包括现在的 Jupyter notebook)进行交互式绘图做了简化工作。matplotlib 支持各种操作系统上的多种 GUI 后端,而且还能将图片导出为各种常见的向量图和光栅图,包括 PDF、SVG、JPG、PNG、BMP、GIF 等。
我们可以终端中使用 pip 安装 matplotlib 包。默认是从国外的主站上下载,因此,我们可能会遇到网络不好的情况导致下载失败。我们可以在 pip 指令后通过 -i 指定国内镜像源下载。
pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple
国内常用的 pip 下载源列表:
- 阿里云 https://mirrors.aliyun.com/pypi/simple
- 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple
- 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple
- 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple
Matplotlib的图像位于 Figure 对象中。你可以用 plt.figure()创建一张新图。在创建图标的时候,我们可以传入figsize=(width, height)参数,用于指定当图片保存到磁盘时,确保图片具有一定的大小和宽高比。创建完图标之后,我们可以调用show() 方法显示出来。
matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, *, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)
num:图形的 唯一标识符。如果是整数指的是图形的 “编号” 属性,字符串则指的是图形的标签。figsize:(width:float,height:float),默认值:rcParams["figure.figsize"](默认值:[6.4,4.8]),单位为英寸。dpi:该图的 分辨率,浮点数,默认值:rcParams["figure.dpi](默认值:100.0)。facecolor:背景颜色,默认值:`rcParams["figure.facecolor"](默认值:“白色”)。edgecolor:边框颜色,默认值:“白色”。frameon:是否绘制图形框架。FigureClass:是Figure类的子类。如果设置了相关参数,那么将会创建该子类的一个实例,而非普通的 “图” 对象。clear:如果条件为真且该图形已经存在,那么就将其清除。**kwargs:用于接收其它关键字参数。
import matplotlib.pyplot as plt
plt.figure() # 创建图表
plt.show() # 显示图表
我们可以使用 title() 方法 添加图标的标题。
matplotlib.pyplot.title(label, fontdict=None, loc=None, pad=None, *, y=None, **kwargs)
label:标题所用文本。fontdict:一个用于控制标题文本外观的字典。建议不要使用fontdict。参数应以单独的关键字参数形式传递,或者使用字典解包的方式。loc:标题的位置,可选值为:center,left,right, 默认值为rcParams["axes.titlelocation"](默认为 "center")。pad:标题相对于坐标轴顶部的偏移量(单位:点)。默认值为rcParams["axes.titlepad"](默认值:6.0)y:标题的垂直轴位置(1.0 代表顶部)。如果设置为 “None”(默认值)且rcParams["axes.titley"](默认值:None)也为 “None”,则 y 值将自动确定,以避免在坐标轴上添加装饰符。
我们可以使用 legend() 方法 添加图例。
matplotlib.pyplot.legend(*args, **kwargs)
我们可以传入直接传入 一个字符串列表 充当图例的标签。然后通过 loc 关键字参数 设置图例的位置,它是一个字符串参数,可以取值如下:"best"、"upper left"、"upper center"、"upper right"、"lower left"、"lower center"、"lower right"、"center"、"right"。
我们可以通过 xlabel() 和 ylabel() 方法 添加 X 轴和 Y 轴的标签。
matplotlib.pyplot.xlabel(xlabel, fontdict=None, labelpad=None, *, loc=None, **kwargs)
matplotlib.pyplot.ylabel(ylabel, fontdict=None, labelpad=None, *, loc=None, **kwargs)
xlabel或ylabel:标签文本。fontdict:一个用于控制标签文本外观的字典。labelpad:与坐标轴边界框相关的点间距,包括刻度和刻度标签。若设置为 “None”,则保持之前的值不变。默认值:rcParams["axes.Labelpad"](默认值:4.0)。loc:标签位置。可选值如下:"bottom","center","top",默认值:rcParams["yaxis.labellocation"](默认值:"center")**kwargs:文本属性决定了标签的外观。
我们可以使用 xticks() 和 yticks() 方法 设置坐标轴的刻度的标签。
matplotlib.pyplot.xticks(ticks=None, labels=None, *, minor=False, **kwargs)
matplotlib.pyplot.yticks(ticks=None, labels=None, *, minor=False, **kwargs)
ticks:坐标轴刻度位置的列表。传递一个空列表将移除坐标轴上所有的刻度。labels:要在给定的刻度位置处所贴的标签。只有在同时传递了 “ticks” 参数的情况下,才能传递此参数。minor:如果为False,则获取/设置主要刻度/标签;如果为True,则获取/设置次要刻度/标签。**kwargs:文本属性可用于控制标签的外观。常见的关键字参数如下:rotation:标签旋转角度。fontsize:标签字体大小。
我们可以通过 xlim() 和 ylim() 方法 设置 X 轴和 Y 轴的范围。
matplotlib.pyplot.xlim(*args, **kwargs)
matplotlib.pyplot.ylim(*args, **kwargs)
我们可以通过 left 和 right 关键字参数 指定 X 轴的范围,通过 top 和 bottom 关键字参数 指定 Y 轴的范围。
我们可以通过 grid() 方法 设置网格线。
matplotlib.pyplot.grid(visible=None, which='major', axis='both', **kwargs)
visible:是否显示网格线。如果提供了任何关键字参数,则假定您希望显示网格,并且 “可见性” 将被设置为True。which:应用于主网格线还是次网格线。可选值如下:"major"、"minor"、"both"。axis:应用于哪个轴。可选值如下:both、x、y。**kwargs:定义网格的线条属性,常见的关键字参数如下:alpha:网格线透明度。color或c:网格线颜色。linestyle或ls:网格线样式。linewidth或lw:网格线宽度。
我们可以通过 text() 方法 在坐标轴上添加文件。
matplotlib.pyplot.text(x, y, s, fontdict=None, **kwargs)
x和y:文本应放置的位置。默认情况下,该位置是以数据坐标系表示的。s:要添加的文本。fontdict:文本样式字典。建议不要使用 fontdict。参数应以单独的关键字参数形式传递,或者使用字典解包的方式。
二、折线图
我们可以使用 plot() 方法 绘制折线图。
matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置使用的字体,matplotlib默认字体对中文的支持不够好
rcParams["font.family"] = "SimHei"
month = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
sales = [100, 120, 80, 90, 110, 130, 100, 120, 80, 90, 110, 130]
plt.figure() # 创建图表
plt.plot(month, sales) # 绘制折线图
plt.show() # 显示图表

在使用 plot() 方法绘制折线图时,可以传入 marker 关键字参数 指定标记点样式。常见的样式如下:

import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置使用的字体,matplotlib默认字体对中文的支持不够好
rcParams["font.sans-serif"] = "SimHei"
month = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
sales = [100, 120, 80, 90, 110, 130, 100, 120, 80, 90, 110, 130]
plt.figure() # 创建图表
plt.plot(month, sales, marker="*") # 绘制折线图,并指定标记点样式
plt.show() # 显示图表

我们还可以传入一个字符串用于指定样式。常见的样式如下:


import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置使用的字体,matplotlib默认字体对中文的支持不够好
rcParams["font.sans-serif"] = "SimHei"
month = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
sales = [100, 120, 80, 90, 110, 130, 100, 120, 80, 90, 110, 130]
plt.figure() # 创建图表
plt.plot(month, sales, "d-.r") # 绘制折线图,并指定样式
plt.show() # 显示图表

我们可以通过参数 ms 用于 指定义标记大小,参数 mfc 用于 指定标记内部的颜色,参数 mec 用于 指定标记边框颜色,参数 mew 用来 指定边框宽度。
import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置使用的字体,matplotlib默认字体对中文的支持不够好
rcParams["font.sans-serif"] = "SimHei"
month = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
sales = [100, 120, 80, 90, 110, 130, 100, 120, 80, 90, 110, 130]
plt.figure() # 创建图表
plt.plot(month, sales, marker="*", ms=20, mfc="r", mec="c", mew="2",lw=5) # 绘制折线图
plt.show() # 显示图表

import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置使用的字体,matplotlib默认字体对中文的支持不够好
rcParams["font.sans-serif"] = "SimHei"
month = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"]
sales = [100, 120, 80, 90, 110, 130, 100, 120, 80, 90, 110, 130]
plt.figure() # 创建图表
plt.plot(month, sales,
marker="o", # 设置折线图点的样式
color="#66FFFF", # 折线图颜色
linewidth=2, # 折线图线宽度
linestyle="--" # 折线图线样式
)
plt.title("销售趋势图", color="#99CCFF", fontsize=16) # 添加标题
plt.legend(["产品A"], loc="upper left") # 添加图例
plt.xlabel("月份", color="#FF6666", fontsize=12) # 添加X轴标签
plt.ylabel("销售额(万元)", color="#FF6666", fontsize=12) # 添加Y轴标签
plt.xticks(rotation=15, fontsize=8) # 设置X轴刻度标签的角度和字体大小
plt.yticks(fontsize=8) # 设置Y轴刻度标签的字体大小
plt.ylim(0, 150) # 设置Y轴的范围
plt.grid(True, alpha=0.3, color="#CCCCFF", linestyle="--") # 添加网格线并设置透明度、颜色和样式
# 设置数字标签
for x, y in zip(month, sales):
plt.text(x, y + 1, str(y), ha='center', va='bottom', fontsize=20)
plt.show() # 显示图表

三、柱状图
我们可以使用 bar() 方法 绘制柱状图。
matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
x:柱状图的 × 坐标。柱状图通常用于表示分类数据,即在柱体下方标注的字符串标签。您可以直接向 bar() 函数提供一个字符串列表。height:柱状图的高度。如果 bottom 有单位,那么 height 则应采用与 bottom 值不同的单位。width:条形的宽度。如果 × 具有单位,那么宽度应以围绕 × 值的差值单位来表示。bottom:柱体底部边界的 y 坐标。如果 bottom 具有单位,那么纵轴将会配备与这些单位相匹配的定位器和格式化器。align:***条形与 × 坐标的对齐方式,可选值如下:"center":将基线置于 × 坐标位置的中间。"edge":使条形的左侧边缘与 × 坐标位置对齐。若要使右侧边框对齐,请传入负值宽度并设置align="edge"参数。
import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置使用的字体,matplotlib默认字体对中文的支持不够好
rcParams["font.sans-serif"] = "SimHei"
subjects = ["语文", "数学", "英语", "科学"]
scores = [93, 95, 90, 97]
plt.figure() # 创建图表
# 绘制柱状图
plt.bar(subjects, scores,
color="#99CCFF", # 柱状图颜色
width=0.6 # 条形的宽度
)
plt.title("成绩分布图", color="#99CCFF", fontsize=16) # 添加标题
plt.legend(["小樱"], loc="best") # 添加图例
plt.xlabel("科目", color="#FF6666", fontsize=12) # 添加X轴标签
plt.ylabel("成绩", color="#FF6666", fontsize=12) # 添加Y轴标签
plt.xticks(rotation=15, fontsize=8) # 设置X轴刻度标签的角度和字体大小
plt.yticks(fontsize=8) # 设置Y轴刻度标签的字体大小
plt.ylim(0, 100) # 设置Y轴的范围
plt.grid(axis="y", alpha=0.3, color="#CCCCFF", linestyle="--") # 添加网格线并设置透明度、颜色和样式
# 设置数字标签
for x, y in zip(subjects, scores):
plt.text(x, y + 1, str(y), ha='center', va='bottom', fontsize=20)
plt.show() # 显示图表

四、条形图
我们可以使用 barh() 方法 绘制条形图。
matplotlib.pyplot.barh(y, width, height=0.8, left=None, *, align='center', data=None, **kwargs)
y:条形图的 y 坐标。条形图通常用于表示分类数据,即在柱体下方标注的字符串标签。您可以直接向 bar() 函数提供一个字符串列表。width:条形的宽度。如果 left 有单位,那么 height 则应采用与 left 值不同的单位。height:条形图的宽度。如果 y 具有单位,那么高度的单位则应与y值的差异单位相同。left:条形图左侧(或两侧)的 × 坐标。如果 left 具有单位,那么 × 轴将会配备与这些单位相匹配的定位器和格式化器。align:***条形与 × 坐标的对齐方式,可选值如下:"center":使条形图形在 y 位置居中。。"edge":将条形图的底部边缘与 y 轴位置对齐。若要使顶部边缘的条形图对齐,请传入负值高度并设置align="edge"参数。
import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置使用的字体,matplotlib默认字体对中文的支持不够好
rcParams["font.sans-serif"] = "SimHei"
subjects = ["语文", "数学", "英语", "科学"]
scores = [93, 95, 90, 97]
plt.figure() # 创建图表
plt.barh(subjects, scores, color="#99CCFF") # 绘制条形图
plt.title("成绩分布图", color="#99CCFF", fontsize=16) # 添加标题
plt.legend(["小樱"], loc="best") # 添加图例
plt.xlabel("成绩", color="#FF6666", fontsize=12) # 添加X轴标签
plt.ylabel("科目", color="#FF6666", fontsize=12) # 添加Y轴标签
plt.xticks(rotation=15, fontsize=8) # 设置X轴刻度标签的角度和字体大小
plt.yticks(fontsize=8) # 设置Y轴刻度标签的字体大小
plt.xlim(0, 100) # 设置X轴的范围
plt.grid(axis="y", alpha=0.3, color="#CCCCFF", linestyle="--") # 添加网格线并设置透明度、颜色和样式
# 设置数字标签
for x, y in zip(scores, subjects):
plt.text(x + 1, y, str(x), ha='center', va='bottom', fontsize=20)
plt.show() # 显示图表

五、饼图
我们可以使用 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=True, hatch=None, data=None)
x:浮点型数组或列表,用于绘制饼图的数据,表示每个扇形的面积。explode:数组,表示 各个扇形之间的间隔,默认值为 0。labels:一系列字符串,用于为 每个扇形部分标注标签。colors:单个颜色或颜色列表。饼图将依次循环显示的一系列颜色。若设置为 “无”,则将使用当前活动循环中的颜色
线填充。autopct:如果不为 None,则 autopct 是一个字符串或函数,用于在圆弧上标注其数值。标注内容会置于圆弧内部。如果 autopct 是一个格式字符串,那么标注内容将为fmt % pct。如果 autopct 是一个函数,则会调用该函数。pctdistance:由autopct生成的文本在半径方向上的相对绘制距离。若要将文本绘制在饼图外部,请将pctdistance设置为大于 1 的值。如果autopct为 None,则此参数将被忽略。shadow:是否绘制阴影。如果为布尔值,则表示是否在饼图下方绘制阴影。如果为字典,则根据字典中的属性绘制一个阴影效果。labeldistance:标签绘制时沿半径方向的相对距离。若要将标签绘制在饼图内部,请将labeldistance设置为小于 1 的值。若将其设置为 None,则不会绘制标签,但仍会将其存储以便在图例中使用。startangle:表示 饼图起始部分相对于 × 轴逆时针旋转的角度。radius:饼图的半径。counterclock:布尔值,用于指定 是否逆时针绘制扇形,默认为 True,即逆时针绘制,False 为顺时针。wedgeprops:字典类型,默认值 None。用于 指定扇形的属性,比如边框线颜色、边框线宽度等。textprops:字典类型,用于 指定文本标签的属性,比如字体大小、字体颜色等,默认值为 None。center:图表中心的坐标,默认值:(0, 0)。frame:布尔类型,用于指定 是否绘制饼图的边框,默认值:False。如果是 True,绘制带有表的轴框架。rotatelabels:布尔类型,用于指定是否旋转文本标签,默认为 False。如果为 True,旋转每个 label 到指定的角度。normalize:当为真时,始终通过对 x 进行标准化处理(使 x 的总和等于 1)来生成完整的饼图。当为假时,如果 × 的总和小于或等于 1,则生成部分饼图;若 × 的总和大于1,则会引发 ValueError 异常。data:用于指定数据。如果设置了 data 参数,则可以直接使用数据框中的列作为 x、labels 等参数的值,无需再次传递。
pie() 函数还可以返回三个参数:
wedges:一个包含扇形对象的列表。texts:一个包含文本标签对象的列表。autotexts:一个包含自动生成的文本标签对象的列表。
import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置使用的字体,matplotlib默认字体对中文的支持不够好
rcParams["font.sans-serif"] = "SimHei"
things = ["学习", "娱乐", "运动", "睡觉", "其它"]
times = [6, 4, 1, 8, 5]
colors = ["#FFCC99", "#FF9999", "#FFCC00", "#99CCFF", "#CC99FF"]
explode = [0.1, 0, 0, 0, 0] # 添加偏移量
plt.figure() # 创建图表
# 绘制柱状图
plt.pie(times, labels=things,
autopct="%.1f%%", # 添加百分比
startangle=90, # 设置起始角度
colors=colors, # 设置每个扇形的颜色
explode=explode, # 设置各个扇形之间的间隔
shadow=True # 添加阴影
)
plt.title("一天的时间分布", color="#99CCFF", fontsize=16) # 添加标题
plt.show() # 显示图表

如果我们要绘制 环状图,可以传入wddgeprops 关键字参数来绘制。
import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置使用的字体,matplotlib默认字体对中文的支持不够好
rcParams["font.sans-serif"] = "SimHei"
things = ["学习", "娱乐", "运动", "睡觉", "其它"]
times = [6, 4, 1, 8, 5]
colors = ["#FFCC99", "#FF9999", "#FFCC00", "#99CCFF", "#CC99FF"]
explode = [0.1, 0, 0, 0, 0] # 添加偏移量
plt.figure() # 创建图表
# 绘制环状图
plt.pie(times, labels=things,
autopct="%.1f%%", # 添加百分比
startangle=90, # 设置起始角度
colors=colors, # 设置每个扇形的颜色
explode=explode, # 设置各个扇形之间的间隔
shadow=True, # 添加阴影
wedgeprops={"width": 0.6}, # 指定扇形的属性,这里设置扇形的宽度
pctdistance=0.6, # 生成的文本在半径方向上的相对绘制距离
)
plt.title("一天的时间分布", color="#99CCFF", fontsize=16) # 添加标题
plt.text(0, 0, "总计:100%", ha="center", va="bottom", fontsize=10)
plt.show() # 显示图表

六、散点图
我们可以使用 scatter() 函数 绘制散点图。
matplotlib.pyplot.scatter(x, y, s=None, c=None, *, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None, colorizer=None, plotnonfinite=False, data=None, **kwargs)
x和y:长度相同的数组,也就是我们即将绘制散点图的 数据点,输入数据。s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。c:点的颜色,默认蓝色 'b',也可以是个 RGB 或 RGBA 二维行数组。marker:点的样式,默认小圆圈 'o'。cmap:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。norm:Normalize,默认 None,数据亮度 在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。vmin和vmax:亮度设置,在 norm 参数存在时会忽略。alpha:透明度设置,0 ~ 1 之间,默认 None,即不透明。linewidths:标记点的长度。edgecolors:颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None。plotnonfinite:布尔值,设置是否使用非限定的 c ( inf, -inf 或 nan) 绘制点。**kwargs:其它关键字参数。
import random
from turtle import color
import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置使用的字体,matplotlib默认字体对中文的支持不够好
rcParams["font.family"] = "SimHei"
x = []
y = []
for i in range(100):
num1 = random.uniform(0, 10)
x.append(num1)
num2 = 2 * num1 + random.gauss(0, 2)
y.append(num2)
plt.figure() # 创建图表
# 绘制散点图
plt.scatter(x, y,
s=20, # 点大小
color="#0088FF", # 点颜色
alpha=0.5 # 透明度
)
plt.title("X变量与Y变量的关系", color="#0088FF", fontsize=20) # 图表标题
plt.legend(["数据"], loc="upper left") # 图例
plt.xlabel("X变量", color="#0088FF", fontsize=15) # X轴标签
plt.ylabel("Y变量", color="#0088FF", fontsize=15) # Y轴标签
plt.xticks(rotation=15, fontsize=8) # 设置X轴刻度标签的角度和字体大小
plt.yticks(fontsize=8) # 设置Y轴刻度标签的字体大小
plt.ylim(0, 30) # 设置Y轴的范围
plt.grid(True, alpha=0.3, color="#CCCCFF", linestyle="--") # 添加网格线并设置透明度、颜色和样式
plt.show() # 显示图表

七、箱线图

matplotlib.pyplot.boxplot(x, *, notch=None, sym=None, vert=None, orientation='vertical', 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, tick_labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_ticks=True, autorange=False, zorder=None, capwidths=None, label=None, data=None)
x:指定要绘制箱线图的数据。notch:是否是凹口的形式展现箱线图,默认非凹口。sym:指定异常点的形状,默认为 + 号显示。vert:是否需要将箱线图垂直摆放,默认垂直摆放。orientation:方向,如果值为"horizontal",则则将箱形图横向绘制。如果值为vertical,则箱形图纵向绘制。whis:指定上下须与上下四分位的距离,默认为 1.5 倍的四分位差。positions:指定箱线图的位置,默认为 [0,1,2…]。widths:指定箱线图的宽度,默认为 0.5。patch_artist:是否填充箱体的颜色。bootstrap:指定是否为带缺口的箱形图的中位数计算置信区间时采用自助法。usermedians:用户均值。conf_intervals:置信区间。meanline:是否用线的形式表示均值,默认用点来表示。showmeans:是否显示均值,默认不显示。showcaps:是否显示箱线图顶端和末端的两条线,默认显示。showbox:是否显示箱线图的箱体,默认显示。showfliers:是否显示异常值,默认显示。boxprops:设置箱体的属性,如边框色,填充色等。tick_labels:为箱线图添加标签,类似于图例的作用。已过时,请用labels代替。filerprops:设置异常值的属性,如异常点的形状、大小、填充色等。medianprops:设置中位数的属性,如线的类型、粗细等。meanprops:设置均值的属性,如点的大小、颜色等。capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等。whiskerprops:设置须的属性,如颜色、粗细、线的类型等。manage_ticks:如果为真,则会调整刻度位置和标签,使其与箱形图的位置相匹配。autorange:当 True 且数据的分布情况使得第 25 百分位数和第 75 百分位数相等时,将其设置为 (0, 100),这样指针的末端就会位于数据的最小值和最大值处。zorder:箱形图的排列顺序。capwidths:帽宽。label:为箱线图添加标签,类似于图例的作用。
import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置使用的字体,matplotlib默认字体对中文的支持不够好
rcParams["font.family"] = "SimHei"
data = {
"语文": [82, 85, 88, 82, 90, 76, 84, 83, 95, 80],
"数学": [75, 80, 79, 93, 65, 88, 56, 94, 97, 33],
"英语": [89, 93, 54, 70, 97, 68, 88, 96, 82, 15],
}
plt.figure() # 创建图表
# 绘制散点图
plt.boxplot(data.values(), tick_labels=data.keys())
plt.title("各科成绩分布(箱线图)", color="#0088FF", fontsize=20) # 图表标题
plt.xlabel("学科", color="#0088FF", fontsize=15) # X轴标签
plt.ylabel("分数", color="#0088FF", fontsize=15) # Y轴标签
plt.xticks(rotation=15, fontsize=8) # 设置X轴刻度标签的角度和字体大小
plt.yticks(fontsize=8) # 设置Y轴刻度标签的字体大小
plt.ylim(0, 100) # 设置Y轴的范围
plt.grid(True, alpha=0.3, color="#CCCCFF", linestyle="--") # 添加网格线并设置透明度、颜色和样式
plt.show() # 显示图表

八、绘制多个图表
我们可以使用 subplot(row, column, index) 方法创建子图。
import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置使用的字体,matplotlib默认字体对中文的支持不够好
rcParams["font.family"] = "SimHei"
month = ["1", "2", "3", "4"]
sales = [100, 120, 80, 90]
f1 = plt.subplot(2, 2, 1) # 创建子图表
f1.plot(month, sales) # 绘制折线图
# 对于行和列都是一位数以内的,可以缩写
f2 = plt.subplot(222) # 创建子图表
f2.bar(month, sales) # 绘制柱状图
f3 = plt.subplot(2, 2, 3) # 创建子图表
f3.scatter(month, sales) # 绘制散点图
f4 = plt.subplot(224) # 创建子图表
f4.barh(month, sales) # 绘制条形图
plt.show() # 显示图表


浙公网安备 33010602011771号