当前位置: 首页 > news >正文

网站创建怎么做/徐州seo

网站创建怎么做,徐州seo,网站seo新手,vue wordpress 主题文章目录 一、简介二、一些基本概念2.1 图表元素2.2 常见图表类型2.3 主要绘图函数及其返回值2.4 Artists 的概念 三、基本图表详解3.1 成对数据3.11 折线图:plot()🟨设置图表样式🟨设置各种标签🟨设置坐标轴🟨绘制子图…

文章目录

  • 一、简介
  • 二、一些基本概念
    • 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

核心特性:

  1. 丰富的图表类型:

    • 线图、散点图、条形图、饼图、直方图等。
    • 高级图表如等高线图、3D 图表、热力图等。
  2. 高度自定义:

    • 图形的各种属性(如颜色、线型、标记、标签等)可以自定义。
    • 可以添加标题、标签、图例、网格等。
  3. 兼容性强:

    • 支持多种输出格式,包括 PNG、PDF、SVG、EPS 等。
    • 与 NumPy 和 Pandas 等库紧密集成,方便数据处理和分析。
  4. 交互性:

    • 支持交互式绘图,能够响应用户操作。
    • 与 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()字典绘制箱线图,返回一个包含多个 Line2DPatch 对象的字典
pie()列表绘制饼图,返回 Wedge 对象的列表
imshow()AxesImage 对象显示图像数据,返回一个 AxesImage 对象
contour()QuadContourSet 对象绘制等高线图,返回一个 QuadContourSet 对象
contourf()QuadContourSet 对象绘制填充等高线图,返回一个 QuadContourSet 对象
pcolormesh()QuadMesh 对象绘制伪彩色图,返回一个 QuadMesh 对象
errorbar()ErrorbarContainer 对象绘制带误差条的图,返回一个 ErrorbarContainer 对象

2.4 Artists 的概念

在 Matplotlib 中,“Artists” 是一个广泛使用的概念,它指的是图形元素的抽象表示。所有在图形上绘制的内容都是一个 Artist 对象,包括但不限于图形、文本、标签、图例等。

Artists 可以分为以下几类:

  1. 基本元素 (Primitive Elements)

    • 这些是最基本的图形元素,例如 Line2DRectangleCircleText 等。
  2. 容器 (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 数组等。xy 的长度必须相同。没数据就画不出图了。

🟢可选参数:主要用来设置图表的样式:如线条样式、轴标签、轴取值等等。

🟢函数返回值: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布尔值是否裁剪超出轴范围的部分。默认为 TrueFalse
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: 图形的尺寸(宽度, 高度),以英寸为单位。
    • 返回 figaxs,其中 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_mosaicmatplotlib 3.4.0 版本引入的一个功能,允许你通过定义一个网格布局的“马赛克”来创建子图。这种方法比传统的 subplot 方法更灵活,因为你可以使用字符串来定义布局,而不是指定行列数。

  • plt.subplot_mosaic(layout, figsize=(width, height)):

    • layout: 一个嵌套的列表,其中每个子列表表示一行,每个元素表示一个子图的标识符。相同的标识符表示共享同一个子图区域。
    • figsize: 图形的尺寸(宽度, 高度),以英寸为单位。
    • 返回 figaxs,其中 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')
参数类型默认值说明
whichstr‘both’指定要显示的网格线类型:
- 'both':显示主网格线和次网格线
- 'major':显示主网格线
- 'minor':显示次网格线
axisstr‘both’指定要应用网格线的轴:
- 'both':对 x 轴和 y 轴应用网格线
- 'x':仅对 x 轴应用网格线
- 'y':仅对 y 轴应用网格线
colorstr‘black’网格线的颜色。可以是颜色名称、RGB 颜色值或十六进制颜色代码,如 'red''#FF5733'
linestylestr‘-’网格线的样式:
- '-':实线
- '--':虚线
- ':':点线
- '-.':点划线
linewidthfloat1.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()
参数类型默认值说明
fnamestrNone文件名或路径。支持相对路径和绝对路径,文件扩展名决定了保存的格式。
dpiint100图像的分辨率,以每英寸点数(DPI)为单位。较高的 DPI 值会产生更高质量的图像。
bbox_inchesstr‘tight’设定边界框的大小。'tight' 自动调整边界框以适应图形内容。
pad_inchesfloat0.1图像边界与内容之间的填充空间,以英寸为单位。
transparentboolFalse如果为 True,背景将透明,适用于 PNG 格式。
qualityint95图像质量,适用于 JPEG 格式,取值范围 1-100。
formatstrNone文件格式,如果 fname 参数中包含扩展名,则此参数可以省略。
facecolorstr‘w’ (white)图像的背景颜色。'w' 表示白色,'none' 表示透明。
edgecolorstr‘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: 点的大小。可以是一个单一的数值,也可以是一个与 xy 长度相同的数组。
  • 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()
参数类型默认值说明
xarray-likeNone条形图的 x 轴数据,即类别或位置。
heightarray-likeNone条形图的高度或长度。
widthfloat0.8条形的宽度,默认为 0.8。如果绘制水平条形图,则为条形的高度。
alignstr‘center’条形的对齐方式:
- 'center':中心对齐
- 'edge':边缘对齐
colorstr, array-likeNone条形的颜色,可以是颜色名称、RGB 颜色值、十六进制颜色代码或颜色列表。
edgecolorstr‘black’条形边缘的颜色。
linewidthfloat1.0条形边缘的宽度,以磅为单位。
tick_labelarray-likeNone设置 x 轴刻度标签。
hatchstrNone条形的填充样式,如 '/''\\'、`’

垂直条形图: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等&#xf…...

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支持多…...

电机相位接线错误导致的潜在问题

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

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应用而设计的&#xff…...