
Malplotlib
今天下午跟着chatgpt把matplotlib的各种图画了一遍,就是一个套路
- 先需要进行数据的分类,X轴,Y轴;或者有的就比如饼图这种就不需要x,y灵活运用吧
- 创建画布,如果只有一张图没有子图的话可以不设置
- 对图形进行调参,颜色,线宽,透明度…
大纲
Matplotlib是一个功能强大的 Python 可视化库,可以绘制各种类型的图形。下面是Matplotlib可以绘制的一些常见图形类型:
- 折线图(Line Plot):用于显示数据随时间或有序变量而变化的趋势。
- 散点图(Scatter Plot):用于显示两个变量之间的关系,每个数据点用一个点表示。
- 条形图(Bar Plot):用于比较不同类别或组之间的数据。
- 直方图(Histogram):用于显示连续变量的分布情况。
- 饼图(Pie Chart):用于显示不同类别在总体中的占比情况。
- 箱线图(Box Plot):用于显示数据的分散程度和异常值情况。
- 热力图(
Heatmap):用于显示两个离散变量之间的关系,通过颜色来表示关联程度。3D图(3DPlot):用于显示三维数据的可视化效果。- 柱状图(Histogram):用于显示多个连续变量之间的对比情况。
- 面积图(Area Plot):用于显示多个变量随时间变化的总体趋势和相对大小。
- 简单地图(Simple Map):用于显示地理数据,如国家、州、城市的分布情况。
1. 折线图
1.1 创建图形对象和坐标系对象
创建图形对象和坐标系:使用 plt.figure() 创建一个图形对象,并使用 fig.add_subplot() 创建一个坐标系。坐标系可以理解为一个绘图区域,可以在上面绘制图形。
1 | # 创建图形对象和坐标系 |
- 第一个参数
1:表示子图网格的总行数。 - 第二个参数
1:表示子图网格的总列数。 - 第三个参数
1:表示当前选择的子图在子图网格中的位置。
1 | import matplotlib.pyplot as plt |
1.2 设置中文
1 | import matplotlib.pyplot as plt |
1.3 设置线段属性
下面是一些常用的参数和属性设置:
color:用于设置折线的颜色。可以使用颜色名称(如"red"、"blue")、颜色缩写(如"r"、"b")或十六进制颜色代码(如#FF0000、#0000FF)来指定颜色。linewidth或lw:用于设置折线的线宽。可以指定一个数值来设置线宽的大小。linestyle或ls:用于设置折线的线型。常见的线型包括实线("-")、虚线("--")、点线(":")等。marker:用于设置折线上数据点的标记样式。可以使用各种标记样式,如圆点(".")、方形("s")、三角形("^")等。
1 | plt.plot(x, y, color='red', linewidth=2, linestyle='--', marker='o') |
1.4 设置图形
1 | # 设置标题和坐标轴标签 |
1.5 Live2D
当需要对多条折线进行属性设置时,使用单个 plot() 函数的参数来设置可能会显得冗长。在这种情况下,可以使用 Line2D 对象来创建折线,并设置其属性。
1 | import matplotlib.pyplot as plt |
1.6 子图
有两种方法
-
1
2
3
4
5
6fig = plt.figure()
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)
ax1.plot(x,y,color='red',linewidth='2',marker='o',linestyle='--')
ax2.plot(x,y,color='blue',linewidth='5',marker='s',linestyle=':') -
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27import matplotlib.pyplot as plt
# 创建子图网格
fig, axs = plt.subplots(2, 3)
# 绘制子图
axs[0, 0].plot([1, 2, 3], [1, 2, 3])
axs[0, 1].scatter([1, 2, 3], [1, 2, 3])
axs[0, 2].bar([1, 2, 3], [1, 2, 3])
axs[1, 0].hist([1, 2, 2, 3, 3, 3])
axs[1, 1].pie([1, 2, 3])
axs[1, 2].imshow([[1, 2, 3], [4, 5, 6]])
# 设置子图标题
axs[0, 0].set_title('Line Chart')
axs[0, 1].set_title('Scatter Plot')
axs[0, 2].set_title('Bar Chart')
axs[1, 0].set_title('Histogram')
axs[1, 1].set_title('Pie Chart')
axs[1, 2].set_title('Image')
# 调整子图间距
plt.tight_layout()
# 显示图形
plt.show()
1.7 注意事项
- 数据的排序:折线图通常会按照数据的顺序连接数据点。确保你的数据点按照正确的顺序排列,以确保折线图的连续性和准确性。
- 坐标轴的刻度和范围:根据数据的取值范围和特点,选择适当的坐标轴刻度和范围。确保坐标轴刻度能够清晰地显示数据的趋势和变化。
- 折线的平滑性:默认情况下,折线图使用直线连接数据点。如果你希望折线图更加平滑,可以考虑使用曲线插值或平滑算法,如样条插值或移动平均。
- 多个折线的可区分性:如果你在同一张图中绘制多条折线,确保每条折线具有明显的区分度。可以通过使用不同的颜色、线型、标记样式等来区分不同的折线。
- 坐标轴标签和标题:记得为图表添加适当的坐标轴标签和标题,以便更好地说明和解释数据。标签应该清晰地描述坐标轴表示的数据内容。
- 数据的准确性和可视化的准确性:确保数据的准确性,并注意可视化的准确性。折线图应该准确地反映数据的趋势和变化,并且不应误导读者。
- 添加图例:如果你绘制了多条折线,添加图例可以帮助读者理解每条折线所代表的含义。图例可以说明每条折线对应的数据或变量,以及使用的颜色、线型等。
1.8 实例
1 | import matplotlib.pyplot as plt |
2. 散点图
2.1 设置属性
c:用于设置散点的颜色。可以传入单个颜色值(如'red'、'blue')、颜色的缩写代码(如'r'、'b')或者表示颜色的数字。你还可以传入一个列表或数组,根据数据的值来自动选择颜色。例如,可以使用c='red'设置所有散点的颜色为红色。marker:用于设置散点的标记样式。可以传入标记名称或符号,如'o'表示圆形、's'表示方形、'^'表示三角形等。默认值为'o',即圆形标记。s:用于设置散点的大小。可以传入一个标量值,表示散点的直径或面积。也可以传入一个与数据维度相同的列表或数组,根据数据的值来自动调整散点的大小。例如,可以使用s=30设置所有散点的大小为 30 个像素。alpha:用于设置散点的透明度。取值范围为 0 到 1,其中 0 表示完全透明,1 表示完全不透明。可以使用alpha=0.5设置散点的透明度为 0.5,即半透明状态。
2.2 实例
1 | import matplotlib.pyplot as plt |
2.3 添加标签
1 | plt.text(x, y, text, **kwargs) |
参数说明:
x:文本标签的 x 坐标位置。y:文本标签的 y 坐标位置。text:要显示的文本内容。**kwargs:可选的关键字参数,用于设置文本样式、颜色、字体大小等。
1 | import numpy as np |
2.4 注意事项
- 数据格式:散点图的数据可以是一维或二维的。如果只有一个数据序列,那么散点图将在 x 轴上绘制,y 轴上的值将被自动生成。如果有两个数据序列,那么第一个序列将被用作 x 值,第二个序列将被用作 y 值。
- 数据点的位置:散点图的数据点的位置是由 x 和 y 值确定的。确保提供正确的数据以获得预期的图形。
- 数据尺度:如果 x 和 y 的值具有不同的尺度,可能需要对数据进行归一化或缩放,以确保数据点在图形上以适当的比例显示。
- 图例:如果有多个数据序列,可以使用图例来标识每个序列对应的含义。可以使用
plt.legend()函数创建图例,并通过设置label参数来指定每个数据序列的标签。- 坐标轴范围:根据需要,可以使用
plt.xlim()和plt.ylim()函数设置 x 和 y 轴的显示范围。这可以帮助更好地突出数据的变化。- 数据标签:如果希望在散点图中显示每个数据点的具体数值,可以考虑添加数据标签。可以使用
plt.text()函数在指定位置添加文本标签。- 数据分组:如果要在散点图中显示多个数据组,并且希望为每个数据组使用不同的颜色、标记样式等,可以考虑使用循环或条件语句来逐个绘制每个数据组的散点图,或者使用 pandas 库进行数据分组和可视化。
- 颜色映射:如果有一个额外的数值序列,可以使用颜色映射来将数据点的颜色与该数值关联起来。可以使用
c参数传入数值序列,并设置cmap参数来选择合适的颜色映射。
3.条形图
3.1 属性设置
color 参数设置条形的颜色
width 参数设置条形的宽度。默认值为 0.8
edgecolor 和 linewidth 参数设置条形的边框颜色和宽度
alpha 参数设置条形的透明度,取值范围为 0.0 到 1.0
plt.text() 函数在条形上方添加标签。可以指定标签的位置、内容和样式
label 是用于标识每个条形的标签,需要有plt.legend()才能显示
1 | plt.bar(categories, values,label='2018年业务量', color='blue', width=0.5, edgecolor='black', linewidth=1, alpha=0.5) |
1 | for i, v in enumerate(values): |
3.2 实例
1 | import matplotlib.pyplot as plt |
3.3 注意事项
- 条形的宽度:条形图中每个条形的宽度默认是相等的,但你可以通过调整
width参数来修改它们的宽度。较宽的条形可能会使图表显得混乱,因此要注意选择合适的宽度。- 条形的对齐方式:条形图中条形的默认对齐方式是居中对齐,即条形在给定的位置上水平居中显示。你也可以通过设置
align参数来改变对齐方式,包括 ‘center’(默认)、‘edge’、‘start’ 等。- 条形的排序:在某些情况下,你可能希望对条形进行排序,例如按照某个属性或值的大小进行排序。你可以使用排序函数(如
sorted())对数据进行排序,然后再绘制条形图。- 条形的颜色:你可以通过设置
color参数来为条形指定颜色。可以使用预定义的颜色名称(如 ‘red’、‘blue’、‘green’ 等),也可以使用十六进制颜色码或 RGB 值来自定义颜色。- 条形的标签:可以通过使用
plt.text()函数在每个条形上添加文本标签,显示每个条形的具体数值或其他相关信息。- 坐标轴标签和标题:记得为图表添加适当的坐标轴标签和标题,以便更好地说明和解释数据。
- 数据的准确性和可视化的准确性:在绘制条形图时,要确保数据的准确性,并注意可视化的准确性。条形图应该准确地反映数据的大小关系,并且不应误导读者。
4.直方图
4.1 设置属性
bins: 指定直方图的区间数量或划分方式。bins='auto':自动选择合适的区间数量和划分方式。bins='sturges':使用Sturges公式确定区间数量。bins='fd':使用Freedman-Diaconis准则确定区间数量。bins=array:传递一个数组来指定每个区间的边界值。
range: 指定直方图的数据范围。density: 设置是否对直方图进行归一化,即将频数转换为频率。color: 设置直方图的填充颜色。edgecolor: 设置直方图边缘线的颜色。alpha: 设置直方图的透明度。histtype: 设置直方图的类型,如’bar’表示普通直方图,'step’表示阶梯状直方图。align: 设置直方图的对齐方式,如’left’表示左对齐,'mid’表示居中对齐。orientation: 设置直方图的方向,如’vertical’表示垂直方向,'horizontal’表示水平方向。label: 设置直方图的标签,用于图例显示。
4.2 实例
1 | import matplotlib.pyplot as plt |
4.3 注意事项
- 数据的合理分组:直方图的可解释性和有效性取决于数据的分组方式。选择合适的区间数量和划分方式是关键。不恰当的分组可能导致信息损失或误导。
- 数据的准备和处理:在绘制直方图之前,需要对数据进行适当的准备和处理。这可能包括数据清洗、缺失值处理和数据转换等步骤,以确保直方图能够准确地反映数据的分布情况。
- 柱形的宽度和间隔:柱形的宽度和间隔也需要适当设置,以便展示数据的分布特征。过宽或过窄的柱形可能使数据的分布不够清晰或容易产生误解。
- 坐标轴的标签和标题:确保直方图的坐标轴具有清晰的标签,以便读者能够理解数据的含义。此外,添加一个有意义的标题可以更好地说明直方图的主题或目的。
- 可视化效果的调整:根据需要,可以调整直方图的颜色、透明度、边框样式等可视化效果,以使直方图更具吸引力和易读性。
- 数据量的考虑:当数据量较大时,直方图可能会变得密集且难以解读。可以通过调整柱形宽度、使用分组的方式或通过其他图表类型来更好地展示大数据集的分布。
5.饼图
5.1 设置属性
-
labels:设置饼图每个部分的标签。1
2labels = ['A', 'B', 'C', 'D']
plt.pie(sizes, labels=labels) -
colors:设置饼图每个部分的颜色。1
2colors = ['red', 'blue', 'green', 'yellow']
plt.pie(sizes, labels=labels, colors=colors) -
autopct:设置饼图每个部分的显示格式,通常用于显示百分比。1
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
-
explode:设置饼图中某个部分的偏移量,用于突出显示。1
2codeexplode = [0, 0.1, 0, 0]
plt.pie(sizes, labels=labels, explode=explode) -
startangle:设置饼图的起始角度,可以调整饼图的旋转位置。1
plt.pie(sizes, labels=labels, startangle=90)
-
shadow:设置是否显示饼图的阴影效果。1
plt.pie(sizes, labels=labels, shadow=True)
-
radius:设置饼图的半径大小。1
plt.pie(sizes, labels=labels, radius=0.8)
-
wedgeprops:设置饼图每个部分的属性,例如边框颜色、边框宽度等。1
2wedgeprops = {'linewidth': 1, 'edgecolor': 'black'}
plt.pie(sizes, labels=labels, wedgeprops=wedgeprops)
5.2 实例
1 | x=['童装','奶粉辅食','孕妈专区','洗护喂养','宝宝尿裤','春夏新品','童车童床','玩具文娱','童鞋'] |
5.3 注意事项
- 饼图的数据应该是各个部分的数值或占比,确保数据的正确性和一致性。
- 饼图的部分数值或占比应该是非负数,否则可能导致绘制错误。
- 饼图的部分数值或占比应该总和为100%,以确保整个饼图代表完整的数据。
- 如果饼图的部分数值非常小,可能会导致饼图中的文本重叠或不可读。可以考虑使用
autopct属性来显示百分比,并设置合适的格式。- 在绘制饼图时,可以使用
explode属性将某个部分偏移,以突出显示。- 可以使用
startangle属性调整饼图的起始角度,以更好地展示数据。- 饼图可以添加标题和图例,以增加可读性和理解性。
- 可以根据需要自定义饼图的颜色、边框等属性,以使其更符合需求。
- 饼图适合用于显示相对比例,但不适合用于比较绝对数值的大小。在需要比较数据的大小时,可以考虑使用其他类型的图表。
6.箱线图
6.1 设置属性
x: 指定要绘制箱线图的数据,可以是单个列表或数组,或多个列表或数组组成的列表。labels: 指定每个数据集的标签,用于在图例中显示。notch: 控制箱线图的缺口效果,默认为False,表示传统的箱线图,True表示绘制缺口箱线图。sym: 指定异常值的标记符号,默认为’+'。vert: 控制箱线图的方向,默认为True,表示垂直方向绘制箱线图,False表示水平方向绘制。patch_artist: 控制是否给箱线图添加颜色填充,默认为False。widths: 指定箱线图的宽度。whis: 指定箱线图的边界范围,默认为1.5,表示上下边界分别为上四分位数加1.5倍的四分位距和下四分位数减1.5倍的四分位距。showfliers: 控制是否显示异常值,默认为True,显示异常值。meanline: 控制是否绘制均值线,默认为False。meanprops: 用于设置均值线的属性,如颜色、线型等。medianprops: 用于设置中位数线的属性。boxprops: 用于设置箱体的属性。whiskerprops: 用于设置须线的属性。capprops: 用于设置边界线的属性。
这些属性可以根据需要进行设置,以满足绘制箱线图的需求。可以通过传递字典或关键字参数的方式来设置这些属性,例如boxplot(data, patch_artist=True, boxprops={'facecolor': 'red'})。
此外,还可以使用plt.xticks()和plt.yticks()等函数设置刻度标签,使用plt.title()设置标题,使用plt.xlabel()和plt.ylabel()设置轴标签等来进一步美化和定制箱线图。
6.2 实例
1 | import matplotlib.pyplot as plt |
6.3 注意事项
- 数据的准备:箱线图适用于展示多个数据集的统计特征,因此需要准备多个数据集。确保数据集之间的含义和维度相同,以便进行比较。
- 异常值处理:箱线图可以显示异常值,可以考虑在图中标记异常值或选择不显示异常值。根据数据的特点和分析目的,决定如何处理异常值。
- 箱体颜色和填充:通过
patch_artist=True参数,可以使箱体具有颜色和填充效果。可以选择不同的颜色和填充样式来区分不同的数据集或表示特定的含义。- 线条样式和颜色:可以通过
set方法设置中位数线、须线、边界线的样式和颜色。选择适当的线型、线宽和颜色以增强可视化效果。- 标记符号和颜色:对于异常值,可以选择不同的标记符号和颜色来突出显示。这样可以使异常值在图中更加显眼。
- 坐标轴标签和标题:为了更好地解释和说明箱线图,应该添加适当的坐标轴标签和标题。这样可以让读者明确图中所展示的数据和含义。
- 数据解读和分析:绘制箱线图不仅仅是为了展示数据,还要对数据进行解读和分析。要注意理解箱线图的含义,包括中位数、四分位数、须线等,以便正确地解读图表。
- 上下文和目标受众:绘制箱线图时,要考虑上下文和目标受众。选择合适的图表样式、颜色和注释,以便让观众更容易理解和解读图表。
7.热力图
7.1 设置属性
cmap:指定颜色映射方案,即用于映射数值到颜色的颜色表。常见的选项包括'hot'、'cool'、'viridis'等。你可以根据需求选择适合的颜色映射方案。vmin和vmax:用于设置颜色映射的数值范围。可以通过指定这两个参数来调整颜色映射的动态范围,使得图像更加突出或者对比度更高。interpolation:用于指定插值方法,即确定图像中每个像素值的颜色。常见的选项有'nearest'、'bilinear'、'bicubic'等。你可以根据需要选择合适的插值方法。aspect:用于设置图像的纵横比。可以使用'auto'或者一个具体的数值来调整图像的宽高比。alpha:设置图像的透明度。可以使用一个范围在0到1之间的数值来指定透明度级别。colorbar:添加颜色标尺。可以使用colorbar函数自动添加颜色标尺,并设置相关的标签。
7.2 实例
1 | import matplotlib.pyplot as plt |
7.3 注意事项
- 数据格式:热力图通常用于展示二维数据的颜色分布情况,因此要确保你的数据是二维数组或矩阵的形式。
- 数据处理:根据数据的特点和需求,你可能需要对数据进行预处理,例如进行归一化、去除异常值或处理缺失值等操作,以确保热力图的结果更加准确和可解释。
- 色彩映射:选择合适的颜色映射方案对于热力图的可读性很重要。确保所选的颜色映射能够清晰地展示数据的变化趋势,避免使用过于饱和或不明显的颜色。
- 数据范围:根据数据的实际情况,设置合适的数据范围,以确保颜色映射能够充分显示数据的变化。可以使用
vmin和vmax参数来调整颜色映射的数值范围。- 插值方法:选择适当的插值方法可以影响热力图的平滑程度和细节展示。根据数据的稀疏程度和需求,选择合适的插值方法,例如最近邻插值、双线性插值或双立方插值等。
- 标签和标题:为热力图添加标签和标题可以提供更好的解读和可视化效果。确保标签和标题清晰、简洁,并能准确传达数据的含义。
- 色彩条和注释:添加色彩条可以帮助读者理解热力图的颜色对应关系。此外,对于特定的热力图,你可能需要添加注释或额外的标记来解释图中的特殊区域或值。
- 图像尺寸和布局:根据热力图的内容和展示需求,调整图像的尺寸和布局,以确保信息清晰可见,并适应展示平台的要求。
8. 3D图
8.1设置属性
- 坐标轴范围:可以使用
set_xlim(),set_ylim(),set_zlim()方法来设置X、Y、Z轴的范围。 - 坐标轴标签:使用
set_xlabel(),set_ylabel(),set_zlabel()方法来设置X、Y、Z轴的标签。 - 图形标题:使用
set_title()方法设置图形的标题。 - 颜色映射:可以使用
colormap参数来设置颜色映射,常用的颜色映射有viridis、plasma、coolwarm等。 - 图形样式:可以设置散点的大小、颜色、透明度等属性来调整图形的样式。
- 视角调整:可以使用
view_init(elev, azim)方法来设置视角的方位角和仰角。 - 网格线:可以使用
grid()方法来显示或隐藏网格线。 - 光照效果:可以使用
lightsource类来调整光照效果,以改变3D图形的阴影和明暗度。 - 图例:可以使用
legend()方法添加图例,说明不同的数据或图形含义。
8.2 实例
1 | import numpy as np |
8.3 注意事项
- 数据准备:确保你有正确的数据集来绘制3D图形。通常情况下,你需要一个三维的数据集,包含X、Y和Z轴上的数值。
- 坐标系选择:使用
projection='3d'参数创建一个3D坐标系对象,例如ax = fig.add_subplot(111, projection='3d')。- 绘制方法:使用适合的方法来绘制3D图形。例如,你可以使用
plot_surface()方法来绘制表面图,使用plot_wireframe()方法来绘制线框图,使用scatter()方法来绘制散点图等。- 坐标轴设置:根据你的数据范围来设置坐标轴的刻度和范围,以确保数据适当地显示在图形中。使用
set_xlim()、set_ylim()和set_zlim()方法设置各个轴的范围。- 坐标轴标签和标题:使用
set_xlabel()、set_ylabel()和set_zlabel()方法设置各个轴的标签,使用set_title()方法设置图形的标题。- 视角调整:使用
view_init()方法来调整视角,通过设置elev参数和azim参数来改变观察者的仰角和方位角。- 其他属性设置:根据需要,你还可以设置其他属性,如颜色映射、线宽、透明度等,以获得更好的可视化效果。
- 图形显示:最后,使用
plt.show()来显示绘制的图形。注意:在使用
Matplotlib绘制3D图形时,你需要确保已经安装了mpl_toolkits.mplot3d模块。可以通过from mpl_toolkits.mplot3d import Axes3D导入该模块。
9.柱状图
9.1设置属性
- 颜色:可以使用
color参数设置柱状图的颜色,可以是单个颜色值或颜色列表。 - 宽度:可以使用
width参数设置柱状图的宽度,默认为0.8。 - 边缘颜色和线型:可以使用
edgecolor参数设置柱状图的边缘颜色,使用linewidth参数设置边缘线的宽度。 - 透明度:可以使用
alpha参数设置柱状图的透明度,取值范围为0到1之间。 - 标签:可以使用
label参数为柱状图添加标签,用于图例显示。 - 柱状图排列方式:可以使用
align参数设置柱状图的排列方式,常见的取值有’center’(居中对齐,默认值)、‘edge’(边缘对齐)等。 - 边缘线样式:可以使用
linestyle参数设置柱状图边缘线的样式,常见的取值有’-‘(实线,默认值)、’–'(虚线)等。
这些属性可以在绘制柱状图时通过传递参数进行设置,例如:
1 | pythonCopy code |
9.2 实例
1 | import matplotlib.pyplot as plt |
9.3 注意事项
- 数据的准备:确保你有正确的数据集用于绘制柱状图。通常,柱状图需要提供每个柱子的高度或值。确保数据的准确性和一致性。
- 选择合适的柱状图类型:柱状图有多种类型,如垂直柱状图、水平柱状图、堆叠柱状图等。根据你的数据和展示需求,选择合适的柱状图类型。
- 坐标轴设置:柱状图通常需要设置合适的坐标轴刻度和标签,确保数据在可视化中能够准确显示。
- 柱状图的宽度和间距:柱状图的宽度和间距可以影响可视化效果和数据的解读。根据数据量和展示需求,调整柱状图的宽度和间距,使得柱子之间有合适的间隔和对比。
- 添加标签和图例:柱状图中的柱子可以添加标签,用于表示具体的数据值或类别信息。同时,为了解释柱状图中的不同组或不同颜色的柱子,可以添加图例,使得读者能够更好地理解图表含义。
- 避免信息重叠:当柱状图中的柱子数量较多或数据值较接近时,要注意避免柱子之间的信息重叠。可以考虑调整柱状图的宽度、间距或旋转柱子标签等方式,以确保数据的清晰可见性。
- 注意数据的排序:根据展示需求,可能需要对柱状图中的数据进行排序。确保数据按照适当的顺序排列,以便更好地传达信息。






