网站创建怎么做/徐州seo
文章目录
- 一、简介
- 二、一些基本概念
- 2.1 图表元素
- 2.2 常见图表类型
- 2.3 主要绘图函数及其返回值
- 2.4 Artists 的概念
- 三、基本图表详解
- 3.1 成对数据
- 3.11 折线图:plot()
- 🟨设置图表样式
- 🟨设置各种标签
- 🟨设置坐标轴
- 🟨绘制子图
- 🟨显示网格线
- 🟨保存为图片
- 3.12 散点图:scatter()
- 3.13 条形图:bar()
- 3.2 统计
- 3.21 直方图
- 3.22 箱线图
- 3.23 饼图
- 3.24 误差线
- 3.3 网格
- 3.4 不规则网格
- 3.5 3D和体积数据
一、简介
Matplotlib 是一个用于创建静态、动态和交互式图表的 Python 绘图库。它提供了大量的图表类型和工具,适用于数据分析和可视化。
Matplotlib是Python语言及其数值计算库NumPy的绘图库。它提供了一个面向对象的API,可以将绘图嵌入到使用通用GUI工具包(如Tkinter、wxPython、Qt或GTK)的程序中。它还有一个基于状态机(就像OpenGL)的过程式编程“pylab”接口,其设计与MATLAB非常类似。
Matplotlib文档:https://matplotlib.org/stable/index.html
核心特性:
-
丰富的图表类型:
- 线图、散点图、条形图、饼图、直方图等。
- 高级图表如等高线图、3D 图表、热力图等。
-
高度自定义:
- 图形的各种属性(如颜色、线型、标记、标签等)可以自定义。
- 可以添加标题、标签、图例、网格等。
-
兼容性强:
- 支持多种输出格式,包括 PNG、PDF、SVG、EPS 等。
- 与 NumPy 和 Pandas 等库紧密集成,方便数据处理和分析。
-
交互性:
- 支持交互式绘图,能够响应用户操作。
- 与 Jupyter Notebook 和 IPython 配合使用,可以创建动态的交互式图表。
如果你用过matlab,那就太好了,Matplotlib很多地方和matlab是相似的。
绘图还有很多不错的其它软件、库,如(只是我用过的):matlab、R、echarts、D3
,当然还有plotly 、Tableau 、Power BI 等。
Echarts
是基于JS的,在网页上绘图很好用,我最开始用的时候他还是百度的,现在已经转移到 Apache 软件基金会了:https://echarts.apache.org/handbook/zh/get-started/
二、一些基本概念
使用 Matplotlib 进行绘图,了解以下基本概念和操作是非常重要的:
2.1 图表元素
在 Matplotlib 中,一个图形(Figure)包含多个元素,每个元素负责不同的功能。下面是各个元素的详细介绍及其在图中的作用:
元素 | 作用 | 描述 |
---|---|---|
Figure | 图形容器 | 整个图形的顶层容器,可以包含一个或多个子图(Axes)。使用 plt.figure() 创建。 |
Axes | 子图区域 | 在 Figure 中定义实际的绘图区域。每个 Axes 对象表示一个坐标系。使用 plt.subplots() 创建。 |
Axis | 坐标轴 | Axes 中的坐标轴对象,用于刻度和标签的管理。每个 Axes 对象有两个 Axis(x 和 y)。 |
Title | 图表标题 | 图表的标题,通常放在图表的顶部。使用 ax.set_title() 设置。 |
Legend | 图例 | 用于解释不同数据系列的标签。使用 ax.legend() 添加。 |
Label | 坐标轴标签 | X 轴和 Y 轴的标签。使用 ax.set_xlabel() 和 ax.set_ylabel() 设置。 |
Major tick | 主刻度 | 主要刻度线,通常用于显示轴上的主要刻度值。使用 ax.xaxis.set_major_locator() 和 ax.yaxis.set_major_locator() 设置。 |
Minor tick | 次刻度 | 辅助刻度线,用于更详细的刻度显示。使用 ax.xaxis.set_minor_locator() 和 ax.yaxis.set_minor_locator() 设置。 |
Spine | 坐标轴的边框 | Axes 边缘的线条,通常用于围绕绘图区域。可以使用 ax.spines['top'] 等访问和设置。 |
Grid | 网格线 | 背景网格线,帮助读取数据值。使用 ax.grid() 显示或隐藏。 |
Line | 数据线 | 连接数据点的线条。使用 ax.plot() 绘制。 |
Markers | 数据点标记 | 在数据点上显示的符号(如圆点、方块等)。可以通过 ax.plot() 的 marker 参数设置。 |
2.2 常见图表类型
图表类型 | 简介 | 对应的方法 |
---|---|---|
线图 | 通过连接数据点的线条显示数据的变化趋势 | plot() |
散点图 | 使用点显示两组数据的关系 | scatter() |
条形图 | 使用矩形条来显示不同类别的数据 | bar() , barh() |
饼图 | 显示各部分在整体中的比例 | pie() |
直方图 | 显示数据的分布情况,通过分桶统计数据频率 | hist() |
箱线图 | 显示数据的分布特征,包括中位数、四分位数及异常值 | boxplot() |
面积图 | 显示随时间变化的数量,类似于线图但通过填充线条下方的区域表示 | fill_between() , stackplot() |
热力图 | 显示数据的密度或频率,通过颜色表示不同数值的大小 | imshow() , pcolormesh() , heatmap() (seaborn) |
极坐标图 | 使用极坐标系绘制数据,适合显示角度和半径的数据 | polar() |
等高线图 | 显示三维数据的等高线,通过等值线表示不同高度 | contour() , contourf() |
气泡图 | 类似于散点图,但通过点的大小表示第三个变量的数据 | scatter() (通过设置点的大小) |
阶梯图 | 显示数据的阶梯变化,通常用于显示分段恒定值的变化 | step() |
蜡烛图 | 显示金融数据的价格变动,通常用于股票和期货市场分析 | mpl_finance.candlestick_ohlc() (需要额外安装 mpl_finance 库) |
三维图 | 显示三维空间中的数据,适合展示复杂的三维关系 | plot_surface() , scatter3D() , plot_wireframe() |
雷达图 | 显示多变量数据,通常用于展示多种特征的综合表现 | plot() (通过极坐标系实现) |
一些示例:
2.3 主要绘图函数及其返回值
以下是一些常用的 Matplotlib 绘图函数及其返回的对象类型。
绘图函数 | 返回值类型 | 说明 |
---|---|---|
plot() | Line2D 对象列表 | 绘制折线图或散点图,每条线对应一个 Line2D 对象 |
scatter() | PathCollection 对象 | 绘制散点图,返回一个 PathCollection 对象 |
bar() | BarContainer 对象 | 绘制柱状图,返回一个 BarContainer 对象 |
hist() | 列表 | 绘制直方图,返回(n , bins , patches ) |
boxplot() | 字典 | 绘制箱线图,返回一个包含多个 Line2D 和 Patch 对象的字典 |
pie() | 列表 | 绘制饼图,返回 Wedge 对象的列表 |
imshow() | AxesImage 对象 | 显示图像数据,返回一个 AxesImage 对象 |
contour() | QuadContourSet 对象 | 绘制等高线图,返回一个 QuadContourSet 对象 |
contourf() | QuadContourSet 对象 | 绘制填充等高线图,返回一个 QuadContourSet 对象 |
pcolormesh() | QuadMesh 对象 | 绘制伪彩色图,返回一个 QuadMesh 对象 |
errorbar() | ErrorbarContainer 对象 | 绘制带误差条的图,返回一个 ErrorbarContainer 对象 |
2.4 Artists 的概念
在 Matplotlib 中,“Artists” 是一个广泛使用的概念,它指的是图形元素的抽象表示
。所有在图形上绘制的内容都是一个 Artist
对象,包括但不限于图形、文本、标签、图例等。
Artists
可以分为以下几类:
-
基本元素 (Primitive Elements):
- 这些是最基本的图形元素,例如
Line2D
、Rectangle
、Circle
、Text
等。
- 这些是最基本的图形元素,例如
-
容器 (Containers):
- 这些是用于组织其他
Artist
的对象。例如,Figure
是最高级别的容器,它包含所有的绘图;Axes
是次一级的容器,它包含具体的绘图区域和图形元素。
- 这些是用于组织其他
以下是一些常见的 Artist
类及其用途:
类名 | 说明 |
---|---|
Figure | 整个图形窗口或绘图区域,是最高级别的容器 |
Axes | 一个具体的绘图区域,包含坐标轴、标题、标签等 |
Axis | 坐标轴,包括刻度、标签等 |
Line2D | 用于绘制二维线条 |
Rectangle | 用于绘制矩形 |
Circle | 用于绘制圆形 |
Text | 用于绘制文本 |
Patch | 用于绘制任意形状的图形,如多边形 |
Legend | 用于绘制图例 |
Image | 用于绘制图像 |
概念,有助于你理解官网文档。
三、基本图表详解
你也可以去看官网的例子,都有代码的:https://matplotlib.org/stable/plot_types/index.html
以及更全的示例,有几百种图:https://matplotlib.org/stable/gallery/index.html
太多了,详解几个常见的吧。
本节我会在第一个绘图示例中讲解一些图表通用的属性设置。
3.1 成对数据
3.11 折线图:plot()
matplotlib.pyplot.plot()
方法是最常用的绘图函数之一。它通常用于创建折线图,但也可以用来绘制其他类型的图形。
基本用法:
import matplotlib.pyplot as pltx = [1, 2, 3, 4]
y = [1, 4, 9, 16]plt.plot(x, y)
plt.show()
🟢必选参数: x, y:这两个参数分别是 X 轴和 Y 轴的数据,可以是列表、元组、NumPy 数组等。x
和 y
的长度必须相同。没数据就画不出图了。
🟢可选参数:主要用来设置图表的样式:如线条样式、轴标签、轴取值等等。
🟢函数返回值:matplotlib.pyplot.plot()返回值是一个 Line2D
对象的列表 (一条线就是一个Line2D对象的列表,访问记得加索引)。Line2D 对象表示绘制的线条或数据系列。每个 Line2D 对象包含有关绘图线条的信息,例如数据点、样式、颜色等。
🟨设置图表样式
🟣(1)直接通过matplotlib.pyplot.plot()
的可选参数设置
这种方法的优点就是简单快捷。
先看示例:
plt.plot(x, y, color='purple', # 线条颜色linestyle=':', # 线条样式marker='o', # 标记样式markersize=8, # 标记大小linewidth=2.0, # 线条宽度alpha=0.7, # 透明度label='Data Line') # 图例标签
以下是 matplotlib.pyplot.plot()
方法的常用可选参数的详细列表:
参数 | 类型 | 描述 | 示例 |
---|---|---|---|
color | 字符串、十六进制颜色码、RGB 元组 | 线条的颜色。可以用颜色名称、十六进制颜色码或 RGB 元组指定。 | 'red' , '#FF0000' , (1, 0, 0) |
linestyle | 字符串 | 线条的样式。常用样式包括实线、虚线、点线等。 | '-' (实线), '--' (虚线), ':' (点线), '-.' (点划线) |
linewidth | 浮点数 | 线条的宽度。默认为 1.0。 | 2.0 |
marker | 字符串 | 数据点的标记样式。常用标记包括圆点、方块、三角形等。 | 'o' (圆点), 's' (方块), '^' (三角形) |
markersize | 浮点数 | 标记的大小。默认为 6。 | 10 |
label | 字符串 | 图例中的标签。和 plt.legend() 配合使用。 | 'Data Line' |
alpha | 浮点数 | 线条的透明度,范围从 0(完全透明)到 1(完全不透明)。 | 0.5 |
zorder | 整数 | 图形的层级顺序,较高的值使图形位于较上层。 | 2 |
markeredgecolor | 字符串、十六进制颜色码、RGB 元组 | 标记边缘的颜色。 | 'black' , '#000000' |
markeredgewidth | 浮点数 | 标记边缘的宽度。默认为 1。 | 1.5 |
markerfacecolor | 字符串、十六进制颜色码、RGB 元组 | 标记内部的颜色。 | 'blue' , '#0000FF' |
dashes | 序列或布尔值 | 自定义虚线样式。传递一个包含线段和间隔的序列。 | (5, 2, 1, 2) |
clip_on | 布尔值 | 是否裁剪超出轴范围的部分。默认为 True 。 | False |
picker | 布尔值、函数 | 允许点击图形元素进行交互。 | True |
dash_capstyle | 字符串 | 虚线的端点样式。可选值包括 'butt' 、'round' 、'projecting' 。 | 'round' |
dash_joinstyle | 字符串 | 虚线的连接样式。可选值包括 'miter' 、'round' 、'bevel' 。 | 'round' |
线条的颜色、样式和标记
可以使用格式化字符串(format string)来指定,而不用分别设置color、linestyle、maker这3个参数,即:
plt.plot(x, y, color='red', linestyle='-',marker='o')
# 等价于
plt.plot(x,y,'r-o')
注意:
- 格式字符串必须紧跟x、y数据后面,不能放在其它参数后面;
- 格式字符串后面还可以照常设置其它参数;
- 颜色、线形、标记可以设置任意数量,如
'r'
,'ro'
,'r-o'
; - 当颜色与其他参数一起指定时,颜色值只能用简写,
'red-o'
是错的; - 只指定一个参数时,颜色可以用任何表示方法,线形和标记只能用简写。
🔹颜色表示:
支持的格式:
- RGB
元组
:如,(0.1, 0.2, 0.5) - RGBA
元组
:如,(0.1, 0.2, 0.5, 0.3)。和rgb一样取值在[0,1],rgba最后一位是透明度。 - 十六进制RGB或RGBA
字符串
:'#abc'
等价'#aabbcc'
。不区分大小写, - 灰度值的闭区间内浮点值的
字符串
表示:如'0'
是黑色,'1'
是白色。 - 基本颜色的简写字符串(使用格式化字符串时必须使用):
'b'
as blue'g'
as green'r'
as red'c'
as cyan'm'
as magenta'y'
as yellow'k'
as black'w'
as white
还有一些其它的颜色表示方法也支持,不常用,不展开了。
这些颜色表示方法,不只是color参数能用,其它需要设置颜色的参数,也可以灵活使用的。
🔹线形表示:
蓝色是给参数赋值是使用的格式。
注意,格式化字符串中,只能使用:'-'
表示 ‘solid’、'--'
表示’dashed’、'-.'
表示’dashdot’、':'
表示’dotted’。
🔹标记表示:
常用的:
🟣(2)通过 matplotlib.pyplot.plot()
返回的 Line2D
对象来设置和调整图形的样式和属性
这种方式提供更细粒度的控制、更高的代码灵活性、方便修改和更新。
Line2D
对象是 matplotlib 中的一个核心类,用于表示和控制绘图中的线条。它包含了有关线条的所有属性和方法,可以用来创建、修改和查询线条的各种特性。
.plot()
画了几条线,返回的Line2D对象列表
就有几个元素,分别代表这些线。
写法:
f = plt.plot(x,y)
f, = plt.plot(x,y)
f = plt.plot(x1,y1,x2,y2)
f1,f2 = plt.plot(x1,y1.x2,y2)
第1、3行的写法,返回值是列表。2、4行返回值则是对应的Line2D对象(Python的解包赋值
)。
解包赋值(unpacking assignment)是 Python 中的一种语法特性,允许你将一个序列(如列表、元组等)中的多个元素一次性赋值给多个变量。这种方式可以简化代码,并使得变量赋值变得更加直观。左右元素数量要相等。
🔹Line2D对象支持的方法:
方法 | 说明 |
---|---|
get_alpha() | 获取线条的透明度 |
get_animated() | 检查线条是否设置为动画 |
get_antialiased() | 获取线条的抗锯齿设置 |
get_c() | 获取线条的颜色 |
get_clip_box() | 获取裁剪边界框 |
get_clip_on() | 检查裁剪是否启用 |
get_clip_path() | 获取裁剪路径 |
get_color() | 获取线条的颜色 |
get_contains() | 获取包含测试函数 |
get_dash_capstyle() | 获取虚线端点样式 |
get_dash_joinstyle() | 获取虚线连接样式 |
get_dashes() | 获取虚线样式 |
get_data() | 获取 x 和 y 数据 |
get_drawstyle() | 获取绘制样式 |
get_ec() | 获取标记的边缘颜色 |
get_figure() | 获取所属的 Figure 对象 |
get_fillstyle() | 获取标记的填充样式 |
get_gid() | 获取对象的全局唯一标识符 |
get_hatch() | 获取填充图案 |
get_label() | 获取线条的标签 |
get_linestyle() | 获取线条样式 |
get_linewidth() | 获取线条宽度 |
get_ls() | 获取线条样式(别名) |
get_lw() | 获取线条宽度(别名) |
get_marker() | 获取标记样式 |
get_markeredgecolor() | 获取标记的边缘颜色 |
get_markeredgewidth() | 获取标记的边缘宽度 |
get_markerfacecolor() | 获取标记的填充颜色 |
get_markerfacecoloralt() | 获取标记的替代填充颜色 |
get_markersize() | 获取标记大小 |
get_markevery() | 获取标记的间隔 |
get_path() | 获取线条的路径 |
get_picker() | 获取拾取属性 |
get_pickradius() | 获取拾取半径 |
get_transform() | 获取变换属性 |
get_visible() | 检查线条是否可见 |
get_xdata() | 获取 x 轴数据 |
get_ydata() | 获取 y 轴数据 |
set_alpha(alpha) | 设置线条的透明度 |
set_animated(b) | 设置线条是否为动画 |
set_antialiased(b) | 设置线条的抗锯齿 |
set_c(c) | 设置线条的颜色 |
set_clip_box(rect) | 设置裁剪边界框 |
set_clip_on(b) | 设置裁剪是否启用 |
set_clip_path(path, transform) | 设置裁剪路径 |
set_color(c) | 设置线条的颜色 |
set_contains(picker) | 设置包含测试函数 |
set_dash_capstyle(s) | 设置虚线端点样式 |
set_dash_joinstyle(s) | 设置虚线连接样式 |
set_dashes(seq) | 设置虚线样式 |
set_data(x, y) | 设置 x 和 y 数据 |
set_drawstyle(s) | 设置绘制样式 |
set_figure(fig) | 设置所属的 Figure 对象 |
set_fillstyle(s) | 设置标记的填充样式 |
set_gid(gid) | 设置对象的全局唯一标识符 |
set_hatch(hatch) | 设置填充图案 |
set_label(label) | 设置线条的标签 |
set_linestyle(s) | 设置线条样式 |
set_linewidth(w) | 设置线条宽度 |
set_marker(m) | 设置标记样式 |
set_markeredgecolor(ec) | 设置标记的边缘颜色 |
set_markeredgewidth(ew) | 设置标记的边缘宽度 |
set_markerfacecolor(fc) | 设置标记的填充颜色 |
set_markerfacecoloralt(fc) | 设置标记的替代填充颜色 |
set_markersize(sz) | 设置标记大小 |
set_markevery(every) | 设置标记的间隔 |
set_path_effects(path_effects) | 设置路径效果 |
set_picker(picker) | 设置拾取属性 |
set_pickradius(r) | 设置拾取半径 |
set_transform(t) | 设置变换属性 |
set_url(url) | 设置 URL |
set_visible(b) | 设置线条是否可见 |
set_xdata(x) | 设置 x 轴数据 |
set_ydata(y) | 设置 y 轴数据 |
如果你需要更多细节,建议参考 Matplotlib 官方文档。
🟨设置各种标签
包括标题、轴标签、文本、点的注释、图例。
🔹标题:
通常:
plt.plot(x, y)
plt.title("这是图表的标题")
或者:
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title("这是图表的标题")
这是绘制子图的,fig代表整张图,ax代表这个子图(即Axes)。
标题是整张图或者子图的标题,所以Figure对象(.title()
)和Axes(.set_title()
)对象才能设置,前面提到的Line2D这样的对象是不能设置标题的。
可以使用 fig.suptitle()
方法为整个图形(包含多个子图)设置全局标题。
标题样式:
plt.title("这是图表的标题", fontdict={'fontsize': 18, 'fontweight': 'bold', 'family': 'simsun', 'color': 'green'})
字体名称在电脑搜索栏搜索字体,点进去,就会看到字体,名称就是xxx.ttf。xxx就是这里要用的名称。
Matplotlib的默认字体是不能显示中文的,你不用在所有使用中文标签的函数中都单独设置一遍字体,可以设置一个全局字体,如:
import matplotlib.pyplot as plt
import matplotlib as mpl# 全局设置字体属性
mpl.rcParams['font.size'] = 14
mpl.rcParams['font.family'] = 'serif'
mpl.rcParams['font.weight'] = 'bold'x = [1, 2, 3, 4]
y = [1, 4, 9, 16]plt.plot(x, y)
plt.title("这是标题")
plt.show()
🔹轴标签:
和标题设置类似的,就是坐标轴起个名字。
使用 plt.xlabel()
和 plt.ylabel()
或者 ax.set_xlabel()
和 ax.set_ylabel()
。
样式设置类似的。
🔹图例:
设置图例(legend)可以帮助识别不同的图形元素,如线条、点、柱状图等。
使用label
+.legend()
:
import matplotlib.pyplot as pltx = [1, 2, 3, 4]
y1 = [1, 4, 9, 16]
y2 = [1, 2, 3, 4]plt.plot(x, y1, label='线条 1')
plt.plot(x, y2, label='线条 2')# 添加图例
plt.legend()
plt.show()
或者使用一个列表传入:
plt.legend(['Line1','Line2'])
若只显示特定对象的图例,比如只显示Line1和Line2:
ax.legend(handles=[line1, line2], labels=['自定义线条 1', '自定义线条 2'])
Axes
对象也是一样的方法。
图例的位置:upper left、upper right、lower left、lower right、upper center、lower center、center left、center right、center、best。
ax.legend(loc='upper left')
可以通过 prop 参数设置字体大小和其他字体属性,通过 frameon 参数设置是否显示图例的边框,通过 shadow 参数设置图例的阴影效果。
ax.legend(loc='upper right', prop={'size': 14, 'weight': 'bold'}, # 字体属性frameon=False, # 不显示边框shadow=True # 显示阴影
)
🔹文本:
.text()
方法可以在图形的任意位置添加文本。需要指定文本的位置(x 和 y 坐标)和内容。
import matplotlib.pyplot as pltx = [1, 2, 3, 4]
y = [1, 4, 9, 16]plt.plot(x, y)
plt.text(2, 10, "这里是文本", fontsize=14, color='blue', fontweight='bold', style='italic') # 设置文本属性
plt.show()
🔹注释:
.annotate()
方法不仅可以添加文本,还可以绘制箭头或其他标记来指示文本所指的位置。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mplmpl.rcParams['font.family'] = 'simsun'fig, ax = plt.subplots(figsize=(5, 2.7))t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2 * np.pi * t)
line, = ax.plot(t, s, lw=2)ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),arrowprops=dict(facecolor='black', shrink=0.05))ax.set_ylim(-2, 2)plt.grid()
plt.show()
详细参数:https://matplotlib.org/stable/users/explain/text/annotations.html#plotting-guide-annotation
🔹文本中使用latex表示公式:
ax.set_title(r'$\sigma_i=15$')
各种字母、数学符号的表示:https://matplotlib.org/stable/users/explain/quick_start.html#using-mathematical-expressions-in-text
🟨设置坐标轴
每个Axes都有2个(或3个)坐标轴。
🔹设置刻度比例:比如对数(log)、线性(linear)等
import matplotlib.pyplot as plt
import numpy as npx = np.logspace(1, 10, 100)
y = x ** 2fig, axs = plt.subplots(1, 2)axs[0].plot(x, y, 'b-*')
axs[0].set_xscale('log')axs[1].plot(x, y, 'r-o')
axs[1].set_yscale('log')plt.show()
🔹设置坐标范围
plt.xlim(left, right)
用于设置 x 轴的范围,其中 left 是最小值,right 是最大值。plt.ylim(bottom, top)
用于设置 y 轴的范围,其中 bottom 是最小值,top 是最大值。
🔹设置刻度和刻度标签标签
import matplotlib.pyplot as plt# 创建示例数据
x = [1, 2, 3, 4, 5]
y = [10, 15, 13, 17, 20]# 创建图形和轴对象
fig, ax = plt.subplots()
ax.plot(x, y)# 设置 x 轴和 y 轴的刻度
ax.set_xticks([1, 2, 3, 4, 5]) # 设置 x 轴的刻度位置
ax.set_yticks([10, 15, 20]) # 设置 y 轴的刻度位置# 设置 x 轴和 y 轴的刻度标签
ax.set_xticklabels(['A', 'B', 'C', 'D', 'E']) # 设置 x 轴的刻度标签
ax.set_yticklabels(['Low', 'Medium', 'High']) # 设置 y 轴的刻度标签# 显示图形
plt.show()
即在相应的位置显示刻度值,如果设置了刻度标签,就显示标签。
或者等距显示:
# 设置 x 轴和 y 轴的刻度间隔
ax.xaxis.set_major_locator(MultipleLocator(2)) # x 轴每隔 2 显示一个刻度
ax.yaxis.set_major_locator(MultipleLocator(5)) # y 轴每隔 5 显示一个刻度
有时候每个刻度标签可能比较长,需要旋转一下文本方向:
# 设置 x 轴和 y 轴的刻度标签方向
ax.tick_params(axis='x', labelrotation=45) # x 轴刻度标签旋转 45 度
ax.tick_params(axis='y', labelrotation=90) # y 轴刻度标签旋转 90 度
🔹设置双坐标轴:
双x轴同理。
import matplotlib.pyplot as plt
import matplotlib as mplmpl.rcParams['font.family'] = 'simsun'# 创建示例数据
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 13, 17, 20]
y2 = [80, 120, 150, 170, 200]# 创建图形和主轴对象
fig, ax1 = plt.subplots()# 绘制第一个 y 轴的数据
ax1.plot(x, y1, 'b-*', label='y1数据')
ax1.set_xlabel('X轴标签')
ax1.set_ylabel('Y1轴标签', color='g')
ax1.tick_params(axis='y', labelcolor='g')# 创建第二个 y 轴,使用 twinx() 方法
ax2 = ax1.twinx()
ax2.plot(x, y2, 'r:o', label='y2数据')
ax2.set_ylabel('Y2轴标签', color='b')
ax2.tick_params(axis='y', labelcolor='b')# 添加图例
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')# 显示图形
plt.show()
🟨绘制子图
在 matplotlib
中,可以使用 .subplot
和 .subplots
方法来绘制多个子图:
-
plt.subplot(nrows, ncols, index)
:nrows
: 子图的行数。ncols
: 子图的列数。index
: 当前子图的位置,从 1 开始(按行优先顺序)。
-
plt.subplots(nrows, ncols, figsize=(width, height))
:nrows
: 子图的行数。ncols
: 子图的列数。figsize
: 图形的尺寸(宽度, 高度),以英寸为单位。- 返回
fig
和axs
,其中fig
是图形对象,axs
是一个包含所有子图的数组。
subplot
方法用于创建单个图形中的多个子图,按照指定的行列布局排列。你可以逐个创建子图并在上面绘制数据。
import matplotlib.pyplot as plt# 创建图形和子图
plt.figure(figsize=(10, 6))# 第一个子图
plt.subplot(2, 2, 1) # 2 行 2 列的网格中的第一个子图
plt.plot([1, 2, 3], [4, 5, 6])
plt.title('子图 1')# 第二个子图
plt.subplot(2, 2, 2) # 2 行 2 列的网格中的第二个子图
plt.bar([1, 2, 3], [4, 5, 6])
plt.title('子图 2')# 第三个子图
plt.subplot(2, 2, 3) # 2 行 2 列的网格中的第三个子图
plt.scatter([1, 2, 3], [4, 5, 6])
plt.title('子图 3')# 第四个子图
plt.subplot(2, 2, 4) # 2 行 2 列的网格中的第四个子图
plt.hist([1, 2, 3, 4, 5])
plt.title('子图 4')# 调整布局以避免重叠
plt.tight_layout()# 显示图形
plt.show()
subplots
方法一次性创建多个子图,并返回一个包含所有子图的数组。这个方法适用于当你需要创建网格布局的子图时。
import matplotlib.pyplot as plt# 创建图形和子图
fig, axs = plt.subplots(2, 2, figsize=(10, 6))# 第一个子图
axs[0, 0].plot([1, 2, 3], [4, 5, 6])
axs[0, 0].set_title('子图 1')# 第二个子图
axs[0, 1].bar([1, 2, 3], [4, 5, 6])
axs[0, 1].set_title('子图 2')# 第三个子图
axs[1, 0].scatter([1, 2, 3], [4, 5, 6])
axs[1, 0].set_title('子图 3')# 第四个子图
axs[1, 1].hist([1, 2, 3, 4, 5])
axs[1, 1].set_title('子图 4')# 调整布局以避免重叠
plt.tight_layout()# 显示图形
plt.show()
subplot_mosaic
是 matplotlib
3.4.0 版本引入的一个功能,允许你通过定义一个网格布局的“马赛克”来创建子图。这种方法比传统的 subplot
方法更灵活,因为你可以使用字符串来定义布局,而不是指定行列数。
-
plt.subplot_mosaic(layout, figsize=(width, height))
:layout
: 一个嵌套的列表,其中每个子列表表示一行,每个元素表示一个子图的标识符。相同的标识符表示共享同一个子图区域。figsize
: 图形的尺寸(宽度, 高度),以英寸为单位。- 返回
fig
和axs
,其中fig
是图形对象,axs
是一个字典,键是子图的标识符,值是对应的Axes
对象。
-
使用标识符:
- 在
layout
中,标识符是用来指定子图的位置和布局的。你可以根据需要自定义这些标识符,以适应复杂的布局需求。
- 在
import matplotlib.pyplot as plt
import matplotlib as mplmpl.rcParams['font.family'] = 'simsun'# 使用 subplot_mosaic 创建子图布局
fig, axs = plt.subplot_mosaic([['A', 'B'],['C', 'B'],],figsize=(10, 8)
)# 在子图 'A' 上绘制数据
axs['A'].plot([1, 2, 3], [4, 5, 6])
axs['A'].set_title('子图 A')
axs['A'].grid(which='both', linestyle='--', linewidth=0.5, color='c')# 在子图 'B' 上绘制数据
axs['B'].bar([1, 2, 3], [4, 5, 6])
axs['B'].set_title('子图 B')
axs['B'].grid(which='both', linestyle=':', linewidth=0.5, color='y')# 在子图 'C' 上绘制数据
axs['C'].scatter([1, 2, 3], [4, 5, 6])
axs['C'].set_title('子图 C')
axs['C'].grid(which='both', linestyle='-', linewidth=0.5, color='r')# 调整布局以避免重叠
plt.tight_layout()
# 显示图形
plt.show()
🟨显示网格线
plt.grid(which='both', linestyle='--', linewidth=0.5, color='gray')
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
which | str | ‘both’ | 指定要显示的网格线类型: - 'both' :显示主网格线和次网格线- 'major' :显示主网格线- 'minor' :显示次网格线 |
axis | str | ‘both’ | 指定要应用网格线的轴: - 'both' :对 x 轴和 y 轴应用网格线- 'x' :仅对 x 轴应用网格线- 'y' :仅对 y 轴应用网格线 |
color | str | ‘black’ | 网格线的颜色。可以是颜色名称、RGB 颜色值或十六进制颜色代码,如 'red' 、'#FF5733' |
linestyle | str | ‘-’ | 网格线的样式: - '-' :实线- '--' :虚线- ':' :点线- '-.' :点划线 |
linewidth | float | 1.0 | 网格线的宽度,以磅为单位 |
🟨保存为图片
plt.savefig()
是 matplotlib
中用于将当前图形保存到文件的方法。它可以保存为多种文件格式,包括 PNG、PDF、SVG、EPS 等。你可以使用 plt.savefig()
方法来保存图形以便后续查看、分享或嵌入到文档中。
import matplotlib.pyplot as plt# 示例数据
x = [1, 2, 3, 4, 5]
y = [10, 15, 13, 17, 20]# 创建图形和轴对象
plt.plot(x, y, marker='o')# 添加标题和标签
plt.title('保存图形示例')
plt.xlabel('X 轴')
plt.ylabel('Y 轴')# 保存图形到文件
plt.savefig('my_plot.png') # 保存为 PNG 格式# 显示图形
plt.show()
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
fname | str | None | 文件名或路径。支持相对路径和绝对路径,文件扩展名决定了保存的格式。 |
dpi | int | 100 | 图像的分辨率,以每英寸点数(DPI)为单位。较高的 DPI 值会产生更高质量的图像。 |
bbox_inches | str | ‘tight’ | 设定边界框的大小。'tight' 自动调整边界框以适应图形内容。 |
pad_inches | float | 0.1 | 图像边界与内容之间的填充空间,以英寸为单位。 |
transparent | bool | False | 如果为 True ,背景将透明,适用于 PNG 格式。 |
quality | int | 95 | 图像质量,适用于 JPEG 格式,取值范围 1-100。 |
format | str | None | 文件格式,如果 fname 参数中包含扩展名,则此参数可以省略。 |
facecolor | str | ‘w’ (white) | 图像的背景颜色。'w' 表示白色,'none' 表示透明。 |
edgecolor | str | ‘w’ (white) | 图像的边缘颜色。 |
前面通过折线图引入,介绍了Matplotlib绘图的各种常用基本操作。但仍然只是冰山一角,还有很多设置、特性没有展开说,感兴趣的部分去官网看文档即可。
3.12 散点图:scatter()
scatter()
是 matplotlib
中用于绘制散点图的函数。散点图显示了两个变量之间的关系,通过将数据点在二维坐标系中标记出来。每个点的位置由其 x 和 y 坐标决定,点的颜色和大小也可以根据其他变量进行编码。
import matplotlib.pyplot as plt# 示例数据
x = [1, 2, 3, 4, 5]
y = [10, 15, 13, 17, 20]# 创建散点图
plt.scatter(x, y)# 添加标签和标题
plt.xlabel('X 轴')
plt.ylabel('Y 轴')
plt.title('散点图示例')# 显示图形
plt.show()
x
: x 轴的数据坐标。y
: y 轴的数据坐标。s
: 点的大小。可以是一个单一的数值,也可以是一个与x
和y
长度相同的数组。c
: 点的颜色。可以是单一颜色,也可以是一个颜色数组,用于根据数据值设置颜色。cmap
: 如果c
是一个数组,可以使用cmap
指定颜色映射。常见的 colormap 包括'viridis'
、'plasma'
、'inferno'
、'magma'
。alpha
: 点的透明度,范围从 0(完全透明)到 1(完全不透明)。marker
: 点的形状,如'o'
(圆形)、's'
(方形)、'^'
(三角形)等。edgecolor
: 点的边缘颜色。linewidths
: 点的边缘线宽。
3.13 条形图:bar()
import matplotlib.pyplot as plt# 示例数据
categories = ['A', 'B', 'C', 'D']
values = [10, 20, 15, 25]# 创建图形
plt.figure(figsize=(8, 6))# 绘制条形图
plt.bar(categories, values)# 添加标题和标签
plt.title('条形图示例')
plt.xlabel('类别')
plt.ylabel('值')# 显示图形
plt.show()
参数 | 类型 | 默认值 | 说明 |
---|---|---|---|
x | array-like | None | 条形图的 x 轴数据,即类别或位置。 |
height | array-like | None | 条形图的高度或长度。 |
width | float | 0.8 | 条形的宽度,默认为 0.8。如果绘制水平条形图,则为条形的高度。 |
align | str | ‘center’ | 条形的对齐方式: - 'center' :中心对齐- 'edge' :边缘对齐 |
color | str, array-like | None | 条形的颜色,可以是颜色名称、RGB 颜色值、十六进制颜色代码或颜色列表。 |
edgecolor | str | ‘black’ | 条形边缘的颜色。 |
linewidth | float | 1.0 | 条形边缘的宽度,以磅为单位。 |
tick_label | array-like | None | 设置 x 轴刻度标签。 |
hatch | str | None | 条形的填充样式,如 '/' 、'\\' 、`’ |
垂直条形图:bar()
水平条形图:barh()
太多了,先写这么多吧,官网都有教程的。
3.2 统计
3.21 直方图
3.22 箱线图
3.23 饼图
3.24 误差线
3.3 网格
3.4 不规则网格
3.5 3D和体积数据
相关文章:

【Python】Matplotlib简要教程
文章目录 一、简介二、一些基本概念2.1 图表元素2.2 常见图表类型2.3 主要绘图函数及其返回值2.4 Artists 的概念 三、基本图表详解3.1 成对数据3.11 折线图:plot()🟨设置图表样式🟨设置各种标签🟨设置坐标轴🟨绘制子图…...

数驭未来,景联文科技构建高质大模型数据库
国内应用层面的需求推动AI产业的加速发展。根据IDC数据预测,预计2026年中国人工智能软件及应用市场规模会达到211亿美元。 数据、算法、算力是AI发展的驱动力,其中数据是AI发展的基石,中国的数据规模增长速度预期将领跑全球。 2024年《政府工…...

视频汇聚平台EasyCVR启动出现报错“cannot open shared object file”的原因排查与解决
安防视频监控EasyCVR安防监控视频系统采用先进的网络传输技术,支持高清视频的接入和传输,能够满足大规模、高并发的远程监控需求。EasyCVR平台支持多种视频流的外部分发,如RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、WebRTC、fmp4等…...

VMware 安装完,设备管理器中没有虚拟网卡(vmnet0、wmnet1、vmnet8) / 虚拟网络编辑器中没有桥接模式
问题:VMware 安装完,设备管理器中没有虚拟网卡(vmnet0、wmnet1、vmnet8) / 虚拟网络编辑器中没有桥接模式 1、确认 Device Install Service 和 Device Setup Manager 没有被禁用 Device Install Service 和 Device Setup Manager是 Windows 操作系统中…...

构建高效Node.js中间层:探索请求合并转发的艺术
🎉 博客主页:【剑九 六千里-CSDN博客】 🎨 上一篇文章:【CSS盒模型:掌握网页布局的核心】 🎠 系列专栏:【面试题-八股系列】 💖 感谢大家点赞👍收藏⭐评论✍ 引言&#x…...

中断和EXIT原理介绍
中断和EXIT原理介绍 一、中断的介绍?二、EXIT的介绍1.EXIT作用2.EXIT的详情3.EXIT中AFIO复用的作用4.STM32中AFIO复用作用 一、中断的介绍? 二、EXIT的介绍 EXTI(Extern Interrupt)外部中断 1.EXIT作用 EXTI可以监测指定GPIO口…...

vcpkg或者命令行需要设置代理时如何设置
当使用命令行或者vcpkg时,有时候需要设置代理来下载一些代码,那么可以这样: 本地先起一个http或者socks5的代理服务器。监听127.0.0.1:10808如果本地是http代理服务器,在命令行执行: set http_proxyhttp://127.0.0.1:…...

tensorflow安装及数据操作----学习笔记(一)
安装Miniconda 下载对应系统版本的Miniconda。我的系统是ubuntu,所以选择Miniconda3 Linux 64-bit。下载后执行下载的sh脚本 sh Miniconda3-latest-Linux-x86_64.sh -b执行后,运行conda初始化命令 ~/miniconda3/bin/conda init关闭当前命令终端&#…...

顺序表和单链表的经典算法题
目录 前言 一、基础思想(数组) 1. 移除元素 2.删除有序元素的重复项 3.合并两个有序数组 二、单链表算法 1.移除链表元素 2.翻转链表 3.合并两个有序的链表 前言 Hello,小伙伴们,今天我们来做一个往期知识的回顾,今天我将…...

python基础知识点(蓝桥杯python科目个人复习计划71)
做些简单题 第一题:确定字符串是否包含唯一字符 题目描述: 实现一个算法来识别一个字符串的字符是否是唯一的。 若唯一输出YES,否则输出NO。 输入描述: 输入一个字符串,长度不超过100. 输出描述; 输出一行&…...

【大数据专题】Flink题库
1 . 简述什么是Apache Flink ? Apache Flink 是一个开源的基于流的有状态计算框架。它是分布式地执行的,具备低延迟、高吞吐的优秀性能,并且非常擅长处理有状态的复杂计算逻辑场景 2 . 简述Flink 的核心概念 ? Flink 的核心概念…...

Python鲁汶意外莱顿复杂图拓扑分解算法
🎯要点 🎯算法池化和最佳分区搜索:🖊网格搜索 | 🖊发现算法池 | 🖊返回指定图的最佳划分 | 🖊返回指定图的最佳分区 | 🎯适应度和聚类比较功能:🖊图的划分 |…...

【C++】类和对象之继承
目录 继承的概念和定义 继承的概念 继承的定义 继承的定义格式 继承关系和访问限定符 继承基类成员访问方式的变化 访问权限实例 基类和派生类对象赋值转换 继承中的作用域 派生类的默认成员函数 继承与友元 继承与静态成员 复杂的菱形继承及菱形虚拟继承 继承的…...

如何在LlamaIndex中使用RAG?
如何在LlamaIndex中使用RAG 什么是 Llama-Index LlamaIndex 是一个数据框架,用于帮助基于 LLM 的应用程序摄取、构建结构和访问私有或特定领域的数据。 如何使用 Llama-Index ? 基本用法是一个五步流程,将我们从原始、非结构化数据导向基于该数据生成…...

css气泡背景特效
css气泡背景特效https://www.bootstrapmb.com/item/14879 要创建一个CSS气泡背景特效,你可以使用CSS的伪元素(:before 和 :after)、border-radius 属性来创建圆形或椭圆形的“气泡”,以及background 和 animation 属性来设置背景…...

7.23模拟赛总结 [数据结构优化dp] + [神奇建图]
目录 复盘题解T2T4 复盘 浅复盘下吧… 7:40 开题 看 T1 ,起初以为和以前某道题有点像,子序列划分,注意到状态数很少,搜出来所有状态然后 dp,然后发现这个 T1 和那个毛关系没有 浏览了一下,感觉 T2 题面…...

MySQL-视 图
视 图 创建视图 视图是从一个或者几个基本表(或视图)导出的表。它与基 本表不同,是一个虚表。 语法: create view 视图名 【view_xxx/v_xxx】 说明: • view_name 自己定义的视图名; • as 后面是这…...

PHP SimpleXML
PHP SimpleXML PHP的SimpleXML扩展提供了一个非常方便的方式来处理XML数据。它是PHP内置的,因此不需要安装额外的库。SimpleXML可以将XML数据转换成对象,使得操作XML变得简单直观。本文将详细介绍SimpleXML的使用方法,包括加载XML、访问和修…...

【Spring Boot 自定义配置项详解】
文章目录 一、配置文件1. properties配置1.1 创建配置文件1.2 添加配置项1.3 在应用中使用配置项1.4 多环境配置 2. YAML配置2.1 创建配置文件2.2 添加配置项2.3 在应用中使用配置项2.4 多环境配置 二、自定义配置类1. 创建配置类2. 使用配置类 一、配置文件 Spring Boot支持多…...

电机相位接线错误导致的潜在问题
交流电机有两种基本类型:单相和三相。一般来说,单相交流电机通常用于家用电器等住宅应用,而三相交流电机则用于工业应用。这主要是因为大多数家庭使用单相电源,而大多数工业场所使用三相电源。 鉴于这两种不同的电源方案…...

react中如何mock数据
1.需求说明 因为前后端分离开发项目,就会存在前端静态页面写好了,后端数据接口还没写好;这时候前端就需要自己定义数据来使用。 定义数据有三种方式:直接写死数据、使用mock软件、json-server工具 这里讲解通过json-server工具…...

通过Faiss和DINOv2进行场景识别
目标:通过Faiss和DINOv2进行场景识别,确保输入的照片和注册的图片,保持内容一致。 MetaAI 通过开源 DINOv2,在计算机视觉领域取得了一个显着的里程碑,这是一个在包含1.42 亿张图像的令人印象深刻的数据集上训练的模型…...

新手入门基础Java
一:基础语法 1.Java的运行机制 2. Java基本语法 1.注释、标识符、关键字; 2.数据类型(四类八种) 3.类型转换 1.自动转换;2.强制转换; 4.常量和变量 1.常量;2.变量; 3.变量的作用域 5.运算符 1.算数运算符;2.赋值运算符;3.关系运算符; 4.逻辑运算符;5.自…...

2024最新版虚拟便携空调小程序源码 支持流量主切换空调型号
产品截图 部分源代码展示 urls.js Object.defineProperty(exports, "__esModule", {value: !0 }), exports.default ["9c5f1fa582bee88300ffb7e28dce8b68_3188_128_128.png", "E-116154b04e91de689fb1c4ae99266dff_960.svg", "573eee719…...

前端在浏览器总报错,且获取请求头中token的值为null
前端请求总是失败说受跨域请求影响,但前后端配置已经没有问题了,如下: package com.example.shop_manage_sys.config;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Conf…...

html+css前端作业 王者荣耀官网6个页面无js
htmlcss前端作业 王者荣耀官网6个页面无js 下载地址 https://download.csdn.net/download/qq_42431718/89571150 目录1 目录2 项目视频 王者荣耀6个页面(无js) 页面1 页面2 页面3 页面4 页面5 页面6...

在windows上使用Docker部署一个简易的web程序
使用Docker部署一个python的web服务🚀 由于是从事算法相关工作,之前在项目中,需要将写完的代码服务,部署在docker上,以此是开始接触了Docker这个工具,由于之前也没系统学习过,之后应该可能还会用…...

sqlalchemy使用mysql的json_extract函数查询JSON字段
sqlalchemy使用mysql的json_extract函数查询JSON字段 在SQLAlchemy中,如果你想要在MySQL中存储JSON字段,并且进行查询操作,可以按照以下步骤进行设置和查询: 1. 创建表格 首先,创建一个表格来存储包含JSON字段的数据。假设我们有一个名为 users 的表格,其中有一个名为…...

分类模型-逻辑回归和Fisher线性判别分析★★★★
该博客为个人学习清风建模的学习笔记,部分课程可以在B站:【强烈推荐】清风:数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibili 目录 1理论 1.1逻辑回归模型 1.2线性概率模型 1.3线性判别分析 1.4两点分布…...

JMeter介绍、安装配置以及快速入门
文章目录 1. JMeter简介2. JMeter安装配置3. JMeter快速入门 1. JMeter简介 Apache JMeter是一款开源的压力测试工具,主要用于测试静态和动态资源(如静态文件、服务器、数据库、FTP服务器等)的性能。它最初是为测试Web应用而设计的ÿ…...