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

《Python星球日记》第26天:Matplotlib 可视化

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》
创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)
订阅专栏:《Python星球日记》

目录

    • 一、Matplotlib 简介
      • 1. 什么是 Matplotlib?为什么使用 Matplotlib?
      • 2. 安装与导入
    • 二、基本绘图
      • 1. 绘制折线图:`plot()`
        • 绘制多条线
        • 自定义线条样式
      • 2. 绘制柱状图:`bar()` 和 `barh()`
        • 垂直柱状图
        • 水平柱状图
        • 分组柱状图
      • 3. 绘制饼图:`pie()`
    • 三、图形美化
      • 1. 添加标题、标签、图例
        • 标题和标签
        • 图例
      • 2. 调整颜色、样式、网格
        • 设置样式
        • 设置颜色和透明度
        • 添加网格
      • 3. 调整坐标轴
      • 4. 子图布局
    • 四、练习:可视化销售数据趋势
      • 1️⃣准备数据
      • 2️⃣绘制销售趋势图表
      • 3️⃣分析与总结
    • 五、总结与拓展
      • 1. 核心知识点回顾
      • 2. 进阶技巧
      • 3. 学习资源推荐

👋 专栏介绍: Python星球日记专栏介绍(持续更新ing)
上一篇: Python星球日记 - 第22天:NumPy 基础

欢迎来到Python星球🪐的第26天!

今天我们将学习Matplotlib,Python中最流行的数据可视化库。通过本文,你将了解如何创建各种类型的图表,以及如何美化它们,让你的数据"说话"更有说服力。

一、Matplotlib 简介

1. 什么是 Matplotlib?为什么使用 Matplotlib?

Matplotlib 是 Python 中最流行的绘图库,它提供了一个完整的 2D 绘图环境,可以创建出具有出版质量的图形。

John Hunter 于 2003 年创建,最初的目的是为了复现 MATLAB 的绘图功能

在这里插入图片描述

为什么要使用 Matplotlib?以下是几个主要原因:

  • 功能丰富:支持线图、散点图、柱状图、饼图、直方图等多种图表类型
  • 高度可定制:几乎每个图形元素都可以自定义
  • 广泛集成:与 NumPy、Pandas 和其他科学计算库紧密集成
  • 行业标准:在数据科学、机器学习和科学研究中被广泛使用
  • 跨平台:支持多种输出格式,包括 PNG、PDF、SVG、EPS 等

Matplotlib 的架构主要分为两种接口

  • pyplot 接口:提供类似 MATLAB 的命令式绘图方式,适合简单快速的绘图
  • 面向对象接口:提供更精确的控制和更复杂的图形组合,适合高度自定义的图表
    在这里插入图片描述

2. 安装与导入

安装 Matplotlib 非常简单,可以使用 pip 或 conda:

# 使用 pip 安装
pip install matplotlib# 使用 conda 安装
conda install matplotlib

在代码中导入 Matplotlib

# 标准导入方式
import matplotlib.pyplot as plt
import numpy as np  # 通常还需要导入 NumPy 进行数据处理

注意plt 是导入 matplotlib.pyplot 的常用别名,几乎所有 Python 数据科学代码都使用这个约定。

二、基本绘图

Matplotlib 提供了多种基本图表类型。下面我们将学习最常用的三种:折线图、柱状图和饼图。

在这里插入图片描述

1. 绘制折线图:plot()

折线图是最基本的图表类型,用于展示数据的变化趋势。使用 plt.plot() 函数可以轻松创建:

import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 准备数据
x = np.linspace(0, 10, 100)  # 从0到10创建100个等间距的点
y = np.sin(x)                # 计算每个点的正弦值# 绘制折线图
plt.figure(figsize=(8, 4))   # 创建画布,设置大小为 8x4 英寸
plt.plot(x, y)               # 绘制折线图
plt.title('正弦函数')         # 添加标题
plt.xlabel('x')              # 添加 x 轴标签
plt.ylabel('sin(x)')         # 添加 y 轴标签
plt.grid(True)               # 添加网格线
plt.show()                   # 显示图形

输出结果:
在这里插入图片描述

绘制多条线

你可以在一个图表上绘制多条线,只需多次调用 plot() 函数:

plt.figure(figsize=(10, 6))
plt.plot(x, np.sin(x), label='sin(x)')     # 绘制正弦函数
plt.plot(x, np.cos(x), label='cos(x)')     # 绘制余弦函数
plt.plot(x, np.tan(x), label='tan(x)')     # 绘制正切函数plt.title('三角函数')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()                               # 添加图例
plt.grid(True)
plt.show()
自定义线条样式

可以通过格式字符串或关键字参数自定义线条的样式:

plt.figure(figsize=(10, 6))
plt.plot(x, np.sin(x), 'r-', linewidth=2)         # 红色实线
plt.plot(x, np.cos(x), 'b--', linewidth=2)        # 蓝色虚线
plt.plot(x, np.sin(x) + np.cos(x), 'g-.', linewidth=2)  # 绿色点划线
plt.show()

样式字符串的构成:

  • 颜色:‘r’ (红)、‘g’ (绿)、‘b’ (蓝)、‘c’ (青)、‘m’ (洋红)、‘y’ (黄)、‘k’ (黑)、‘w’ (白)
  • 线型:‘-’ (实线)、‘–’ (虚线)、‘-.’ (点划线)、‘:’ (点线)
  • 标记:‘o’ (圆点)、‘s’ (方块)、‘^’ (三角形)、‘*’ (星号)等

2. 绘制柱状图:bar()barh()

柱状图用于比较不同类别的数据大小,分为垂直柱状图(bar())和水平柱状图(barh())。

垂直柱状图
import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 准备数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [25, 40, 30, 55, 15]# 创建垂直柱状图
plt.figure(figsize=(8, 6))
plt.bar(categories, values, color='skyblue', edgecolor='navy')
plt.title('各类别数据比较')
plt.xlabel('类别')
plt.ylabel('数值')
plt.show()

在这里插入图片描述

水平柱状图
plt.figure(figsize=(8, 6))
plt.barh(categories, values, color='skyblue', edgecolor='navy')
plt.title('各类别数据比较')
plt.xlabel('数值')
plt.ylabel('类别')
plt.show()
分组柱状图

分组柱状图用于比较多个数据集:

# 准备数据
categories = ['A', 'B', 'C', 'D', 'E']
values1 = [25, 40, 30, 55, 15]
values2 = [15, 30, 40, 20, 35]# 设置柱状图位置
x = np.arange(len(categories))  # 类别标签位置
width = 0.35  # 柱子宽度# 创建分组柱状图
plt.figure(figsize=(10, 6))
plt.bar(x - width/2, values1, width, label='组1', color='skyblue')
plt.bar(x + width/2, values2, width, label='组2', color='lightgreen')# 添加标签和图例
plt.title('两组数据比较')
plt.xlabel('类别')
plt.ylabel('数值')
plt.xticks(x, categories)  # 替换 x 轴刻度标签
plt.legend()
plt.grid(True, axis='y')  # 只显示水平网格线
plt.show()

3. 绘制饼图:pie()

饼图用于显示数据的比例关系,特别适合表示占比或分布情况。

import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 准备数据
labels = ['A', 'B', 'C', 'D', 'E']
sizes = [15, 30, 25, 10, 20]  # 各部分大小
explode = (0, 0.1, 0, 0, 0)   # 突出显示第二部分
colors = ['gold', 'lightcoral', 'lightskyblue', 'lightgreen', 'lightpink']  # 各部分颜色# 创建饼图
plt.figure(figsize=(8, 8))
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%',  # 显示百分比格式shadow=True,        # 添加阴影startangle=90)      # 起始角度
plt.axis('equal')           # 确保饼图是圆形的
plt.title('数据占比分布')
plt.show()

输出结果:

在这里插入图片描述

饼图的主要参数:

  • sizes:各部分的大小
  • explode:特定部分的突出显示
  • labels:各部分的标签
  • colors:各部分的颜色
  • autopct:显示百分比的格式
  • shadow:是否添加阴影效果
  • startangle:起始角度

三、图形美化

默认的 Matplotlib 图形样式较为简单,通过一些美化设置可以让图表更加专业和美观。

1. 添加标题、标签、图例

标题和标签
plt.figure(figsize=(10, 6))
plt.plot(x, np.sin(x))# 添加标题和标签
plt.title('正弦函数图', fontsize=16)          # 添加标题,设置字体大小
plt.xlabel('X 轴', fontsize=12)               # 添加 x 轴标签
plt.ylabel('Y 轴', fontsize=12)               # 添加 y 轴标签# 添加文本注释
plt.text(5, 0.5, 'sin(x) 的最大值是 1', fontsize=12)plt.show()
图例

图例帮助识别图表中的不同数据系列:

plt.figure(figsize=(10, 6))# 绘制多条线并设置标签
plt.plot(x, np.sin(x), 'r-', label='sin(x)')
plt.plot(x, np.cos(x), 'b--', label='cos(x)')
plt.plot(x, np.sin(x) * np.cos(x), 'g-.', label='sin(x)·cos(x)')# 添加图例
plt.legend(loc='best',          # 自动选择最佳位置fontsize=12,         # 设置字体大小frameon=True,        # 显示边框shadow=True)         # 添加阴影效果plt.show()

图例位置选项:

  • 'best':自动选择最佳位置
  • 'upper right', 'upper left', 'lower right', 'lower left':四个角
  • 'center', 'center left', 'center right', 'lower center', 'upper center':中心和边缘

2. 调整颜色、样式、网格

设置样式

Matplotlib 提供了多种预设样式可供选择:

# 查看可用样式
print(plt.style.available)# 设置样式
plt.style.use('seaborn-v0_8-darkgrid')  # 使用 Seaborn 暗网格样式plt.figure(figsize=(10, 6))
plt.plot(x, np.sin(x))
plt.title('使用 Seaborn 样式的图表')
plt.show()

常用样式包括:‘ggplot’, ‘seaborn’, ‘bmh’, ‘dark_background’, ‘fivethirtyeight’ 等。

设置颜色和透明度
plt.figure(figsize=(10, 6))# 设置颜色和透明度
plt.plot(x, np.sin(x), color='#FF5733', alpha=0.8, linewidth=2)
plt.fill_between(x, np.sin(x), alpha=0.3, color='#FF5733')  # 添加填充区域plt.title('带填充区域的正弦函数')
plt.show()

颜色可以通过名称(如 ‘red’)、十六进制代码(如 ‘#FF5733’)或 RGB 元组(如 (1, 0, 0))指定。

添加网格
plt.figure(figsize=(10, 6))
plt.plot(x, np.sin(x))# 添加网格
plt.grid(True,               # 显示网格linestyle='--',     # 虚线样式alpha=0.7,          # 透明度color='gray')       # 颜色plt.show()

3. 调整坐标轴

plt.figure(figsize=(10, 6))
plt.plot(x, np.sin(x))# 设置坐标轴范围
plt.xlim(0, 10)              # 设置 x 轴范围
plt.ylim(-1.5, 1.5)          # 设置 y 轴范围# 设置刻度
plt.xticks(np.arange(0, 11, 2))          # 设置 x 轴刻度
plt.yticks([-1, -0.5, 0, 0.5, 1])        # 设置 y 轴刻度plt.show()

4. 子图布局

使用 subplot 可以在一个图形中创建多个子图:

plt.figure(figsize=(12, 8))# 创建 2x2 布局的子图
plt.subplot(2, 2, 1)  # 第一行第一列
plt.plot(x, np.sin(x))
plt.title('sin(x)')plt.subplot(2, 2, 2)  # 第一行第二列
plt.plot(x, np.cos(x), 'g-')
plt.title('cos(x)')plt.subplot(2, 2, 3)  # 第二行第一列
plt.plot(x, np.sin(x) * np.cos(x), 'r-')
plt.title('sin(x)·cos(x)')plt.subplot(2, 2, 4)  # 第二行第二列
plt.plot(x, np.sin(x) + np.cos(x), 'm-')
plt.title('sin(x)+cos(x)')plt.tight_layout()  # 自动调整子图参数,使之填充整个图像区域
plt.show()

四、练习:可视化销售数据趋势

现在,让我们应用所学知识,创建一个销售数据可视化案例。

1️⃣准备数据

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from matplotlib.ticker import StrMethodFormatter# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']  
plt.rcParams['axes.unicode_minus'] = False# 生成销售数据
np.random.seed(42)  # 设置随机种子,确保结果可重现# 创建月份数据
months = pd.date_range(start='2023-01-01', periods=12, freq='ME')
month_labels = [m.strftime('%Y-%m') for m in months]# 创建三种产品的销售数据
product_A = np.random.randint(100, 200, size=12) * (1 + np.sin(np.linspace(0, 2*np.pi, 12)) * 0.2)
product_B = np.random.randint(150, 250, size=12) * (1 + np.cos(np.linspace(0, 2*np.pi, 12)) * 0.1)
product_C = np.random.randint(80, 180, size=12) * (1 + 0.05 * np.arange(12))  # 线性增长趋势# 创建 DataFrame
sales_data = pd.DataFrame({'月份': month_labels,'产品A': product_A,'产品B': product_B,'产品C': product_C
})# 计算总销售额
sales_data['总销售额'] = sales_data['产品A'] + sales_data['产品B'] + sales_data['产品C']print(sales_data.head())

输出结果:

在这里插入图片描述

2️⃣绘制销售趋势图表

# 设置绘图样式
plt.style.use('seaborn-v0_8-whitegrid')# 创建一个大画布,包含多个子图
plt.figure(figsize=(15, 10))# 1. 绘制各产品月度销售趋势折线图
plt.subplot(2, 2, 1)
plt.plot(sales_data['月份'], sales_data['产品A'], 'o-', label='产品A', linewidth=2)
plt.plot(sales_data['月份'], sales_data['产品B'], 's-', label='产品B', linewidth=2)
plt.plot(sales_data['月份'], sales_data['产品C'], '^-', label='产品C', linewidth=2)plt.title('各产品月度销售趋势', fontsize=14)
plt.xlabel('月份', fontsize=12)
plt.ylabel('销售额', fontsize=12)
plt.xticks(rotation=45)  # 旋转 x 轴标签,防止重叠
plt.legend()
plt.grid(True)# 2. 绘制总销售额柱状图
plt.subplot(2, 2, 2)
bars = plt.bar(sales_data['月份'], sales_data['总销售额'], color='skyblue', edgecolor='navy')# 为柱状图添加数值标签
for bar in bars:height = bar.get_height()plt.text(bar.get_x() + bar.get_width()/2., height + 5,f'{int(height)}',ha='center', va='bottom', fontsize=9)plt.title('月度总销售额', fontsize=14)
plt.xlabel('月份', fontsize=12)
plt.ylabel('销售额', fontsize=12)
plt.xticks(rotation=45)
plt.gca().yaxis.set_major_formatter(StrMethodFormatter('{x:,.0f}'))  # 设置 y 轴格式# 3. 绘制每月各产品销售占比(堆叠柱状图)
plt.subplot(2, 2, 3)
bottom = np.zeros(12)  # 初始底部位置for product, color in zip(['产品A', '产品B', '产品C'], ['#5DA5DA', '#FAA43A', '#60BD68']):plt.bar(sales_data['月份'], sales_data[product], bottom=bottom, label=product, color=color, alpha=0.8)bottom += sales_data[product]  # 更新底部位置plt.title('月度产品销售比例', fontsize=14)
plt.xlabel('月份', fontsize=12)
plt.ylabel('销售额', fontsize=12)
plt.xticks(rotation=45)
plt.legend()# 4. 绘制三种产品总销售额占比(饼图)
plt.subplot(2, 2, 4)
product_totals = [sales_data['产品A'].sum(), sales_data['产品B'].sum(), sales_data['产品C'].sum()]
labels = ['产品A', '产品B', '产品C']
colors = ['#5DA5DA', '#FAA43A', '#60BD68']
explode = (0.05, 0, 0)  # 突出显示产品Aplt.pie(product_totals, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90, explode=explode, shadow=True)
plt.axis('equal')  # 保证饼图是圆的
plt.title('各产品销售总额占比', fontsize=14)# 调整布局
plt.tight_layout()
plt.savefig('sales_analysis.png', dpi=300, bbox_inches='tight')  # 保存图表
plt.show()

输出结果:

在这里插入图片描述

3️⃣分析与总结

通过上面的可视化图表,我们可以清晰地看到:

  1. 销售趋势:折线图展示了各产品每月的销售变化趋势,可以观察到季节性波动和长期趋势。
  2. 销售规模:柱状图直观地展示了每月的总销售额,便于比较不同月份的销售表现。
  3. 产品结构:堆叠柱状图展示了每月各产品的销售构成,饼图则展示了全年各产品的销售比例。

这种综合性的可视化方式,可以帮助我们从多个角度分析销售数据,发现潜在的商业机会和挑战。

五、总结与拓展

1. 核心知识点回顾

在本文中,我们学习了:

- `Matplotlib 的基本概念`:包括其架构、用途和导入方式
- `基本图表类型`:如何创建折线图、柱状图和饼图
- `图形美化技巧`:如何添加标题、标签、图例,以及调整颜色、样式和网格
- `实战应用`:如何将多种图表类型组合使用,进行综合性的数据可视化

2. 进阶技巧

如果你想进一步提升 Matplotlib 可视化技能,可以探索以下内容:

  • 更多图表类型:如散点图、直方图、箱线图、热力图等
  • 3D 绘图:使用 mplot3d 工具包创建三维图表
  • 交互式图表:结合 ipywidgets 创建交互式可视化
  • 动画:使用 animation 模块创建动态图表
  • 与 Pandas 结合:使用 Pandas 的 plot() 方法,简化数据可视化流程

3. 学习资源推荐

  • 官方文档:Matplotlib 官方文档
  • 图例集:Matplotlib 图例集
  • 在线教程:Datacamp、Coursera 上的 Python 数据可视化课程
  • 书籍:《Python for Data Analysis》和《Python Data Science Handbook》

在下一篇文章中,我们将探索另一个强大的可视化库 Seaborn,它基于 Matplotlib 构建,提供了更高级的统计图表和更优雅的默认样式。

关键词:Python, Matplotlib, 数据可视化, 绘图, 折线图, 柱状图, 饼图, 图表美化, CSDN Python教程

练习题

  1. 尝试结合 Pandas 和 Matplotlib,可视化一个包含多个变量的真实数据集(如气温、股票价格等)。
  2. 创建一个包含 4 个子图的画布,分别用不同类型的图表展示同一数据集的不同特征。
  3. 探索 Matplotlib 的颜色映射(colormap)功能,尝试使用不同的颜色方案来增强可视化效果。

希望这篇文章能帮助你掌握 Matplotlib 的基础知识,开始创建引人注目的数据可视化作品,如有问题,欢迎在评论区留言交流!

创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)
如果你对今天的内容有任何问题,或者想分享你的学习心得,欢迎在评论区留言讨论!

相关文章:

《Python星球日记》第26天:Matplotlib 可视化

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 订阅专栏:《Python星球日记》 目录 一、Matplotlib 简介1. 什么是 Matplo…...

2025蓝桥杯python A组题解

真捐款去了,好长时间没练了,感觉脑子和手都不转悠了。 B F BF BF 赛时都写假了, G G G 也只写了爆搜。 题解其实队友都写好了,我就粘一下自己的代码,稍微提点个人的理解水一篇题解 队友题解 B 思路: 我…...

OpenHarmony - 小型系统内核(LiteOS-A)(一)

OpenHarmony - 小型系统内核(LiteOS-A)(一) 一、小型系统内核概述 简介 OpenHarmony 轻量级内核是基于IoT领域轻量级物联网操作系统Huawei LiteOS内核演进发展的新一代内核,包含LiteOS-M和LiteOS-A两类内核。LiteOS-…...

Neo4j GDS-13-neo4j GDS 库中节点插入算法实现

neo4j GDS 系列 Neo4j APOC-01-图数据库 apoc 插件介绍 Neo4j GDS-01-graph-data-science 图数据科学插件库概览 Neo4j GDS-02-graph-data-science 插件库安装实战笔记 Neo4j GDS-03-graph-data-science 简单聊一聊图数据科学插件库 Neo4j GDS-04-图的中心性分析介绍 Neo…...

js中this的指向问题

前言: 在js中,this出现的位置多种多样,你会不会迷糊呢?this到底指代的是哪个对象?这篇文章带你搞懂不同场景下this的指向问题。 this出现场景: 从作用域的角度来讲,this出现的位置无非就是两…...

【3dSwap】3D-Aware Face Swapping

文章目录 3D-Aware Face Swapping背景points贡献方法从2D图像推断3D先验通过潜在代码操纵进行人脸交换联合枢轴调整目标函数实验与二维人脸交换方法比较进一步分析3D感知人脸交换消融实验局限性3D-Aware Face Swapping 会议/期刊:CVPR 2023 作者: code:https://lyx0208.gi…...

基于STM32的智能门禁系统

2.1系统方案设计 本课题为基于STM32的智能门禁系统的设计,其系统架构如图2.1所示,整个系统由STM32F103单片机和MaixBit开发板两部分构成,其中MaixBit是基于K210芯片的开发板,在此主要负责人脸的录入,识别,…...

用链表、信号,实现简易MP3项目

链表实现MP3 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <time.h> #include <dirent.h> #include <sys/stat.h> #include <sys/types.h> #include <glob.h> #inc…...

YOLO检测目标后实现距离测量

当我们使用YOLO检测器得到检测结果后&#xff0c;我们如何计算检测的物体距离相机的位置呢&#xff1f; 目前&#xff0c;有三种较为主流的距离计算方法&#xff0c;分别是单目测距、双目测距以及基于深度估计的测距方法。 单目测距 工作原理&#xff1a;单目测距使用一个摄像…...

js 效果展示 拿去练手

自学完整功能&#xff0c;拿去练手。 鼠标移动放大 通过网盘分享的文件&#xff1a;图片放大 链接: https://pan.baidu.com/s/1w8SjtKi4kUNDnZtRDfYMeQ?pwd95p6 提取码: 95p6 通过网盘分享的文件&#xff1a;图片动画效果 链接: https://pan.baidu.com/s/1Pjphx-Cc4HQQNNujr…...

【算法】 欧拉函数与欧拉降幂 python

欧拉函数 欧拉函数 ϕ ( n ) \phi(n) ϕ(n) 表示小于等于 n 的正整数中与 n 互质的数的个数。即&#xff1a; ϕ ( n ) ∣ { k ∈ Z ∣ 1 ≤ k ≤ n , gcd ⁡ ( k , n ) 1 } ∣ \phi(n) \left| \{ k \in \mathbb{Z}^ \mid 1 \leq k \leq n, \gcd(k, n) 1 \} \right| ϕ(n)…...

Qt触摸屏隐藏鼠标指针

Qt触摸屏隐藏鼠标指针 Chapter1 Qt触摸屏隐藏鼠标指针 Chapter1 Qt触摸屏隐藏鼠标指针 使用Qt开发的屏幕软件HMI不需要显示鼠标&#xff0c;qt设置&#xff0c;可以在只启动HMI的时候隐藏光标&#xff0c;退出时再显示。 1.如果只希望在某个 widget 中不显示鼠标指针&#xf…...

QT聊天项目DAY01

1.新建初始项目 2.修改UI格式 运行效果 3.创建登录界面 设计登录界面UI 设计布局 调整布局间距 往水平布局中拖入标签和文本输入框 更换控件名称并固定高度 添加窗口部件 往现有的资源文件中导入图片 添加水平布局 4.设置登陆界面为主窗口的核心组件 #pragma once#include &l…...

Stable Diffusion +双Contronet:从 ControlNet 边缘图到双条件融合:实现服装图像生成的技术演进——项目学习记录

前言 学习记录contronet优化&#xff1a;最近&#xff0c;我基于 diffusers 库的 ControlNet&#xff0c;探索了如何通过 Canny 边缘图控制服装图像生成&#xff0c;并逐步升级到融合颜色图的双条件模型。有不断的问题、解决和进步&#xff0c;从最初的边缘图生成到最终实现 2…...

【Hadoop入门】Hadoop生态之Spark简介

1 什么是Spark&#xff1f; Apache Spark 是一个开源的分布式计算框架&#xff0c;专为处理大规模数据而设计。它提供了高效、通用的集群计算能力&#xff0c;支持内存计算&#xff0c;能够显著提高数据处理和分析的速度。Spark 已经成为大数据处理领域的重要工具&#xff0c;广…...

深度学习学习笔记

目录 摘要 Abstracts 简介 Hourglass Module&#xff08;Hourglass 模块&#xff09; 网络结构 Intermediate Supervision&#xff08;中间监督&#xff09; 训练过程细节 评测结果 摘要 本周阅读了《Stacked Hourglass Networks for Human Pose Estimation》&#xf…...

小米运维面试题及参考答案(80道面试题)

请讲解一下 linux top 后进程的状态 在 Linux 系统中,使用top命令可以查看系统中正在运行的进程的相关信息,进程通常有以下几种状态: 运行(R):表示进程正在 CPU 上运行或者正在运行队列中等待运行。处于运行状态的进程正在积极地使用 CPU 资源来执行其任务。睡眠(S):进…...

动态多目标优化:基于可学习预测的动态多目标进化算法(DIP-DMOEA)求解CEC2018(DF1-DF14),提供MATLAB代码

一、DIP-DMOEA介绍 基于可学习预测的动态多目标进化算法&#xff08;Learning-Based Directional Improvement Prediction for Dynamic Multiobjective Optimization&#xff0c;DIP-DMOEA&#xff09;是2024年提出的一种动态多目标进化算法&#xff0c;核心在于利用神经网络学…...

第十六届蓝桥杯大赛软件赛省赛 C/C++ 大学B组

由于官方没有公布题目的数据, 所以代码仅供参考 1. 移动距离 题目链接&#xff1a;P12130 [蓝桥杯 2025 省 B] 移动距离 - 洛谷 【问题描述】 小明初始在二维平面的原点&#xff0c;他想前往坐标 (233, 666)。在移动过程中&#xff0c;他 只能采用以下两种移动方式&#xf…...

《Nature Methods》新算法|MARBLE利用几何深度学习解释神经群体动力学

一、写在前面 本次分享的是2025年2月发布于《Nature Methods》的题为"MARBLE:interpretable representations of neural population dynamics using geometric deep learning"的文章。在神经科学和机器学习领域交汇的今天&#xff0c;我们不断探索如何从复杂的神经活…...

【力扣hot100题】(093)最长公共子序列

还算是挺简单的一题。 维护二维数组代表截至至两个字符串的某个位置&#xff0c;前面的最长公共子序列长度。 状态转移方程就是当两字符相等是&#xff0c;取俩位置前一个的值加一&#xff0c;否则就直接等于俩位置前一个值。 class Solution { public:int longestCommonSub…...

(打卡)794. 高精度除法

C&#xff1a; Python&#xff1a; aint(input()) bint(input()) print(a//b) print(a%b)...

网络5 TCP/IP 虚拟机桥接模式、NAT、仅主机模式

TCP/IP模型 用于局域网和广域网&#xff1b;多个协议&#xff1b;每一层呼叫下一层&#xff1b;四层&#xff1b;通用标准 TCP/IP模型 OSI七层模型 应用层 应用层 表示层 会话层 传输层 传输层 网络层 网络层 链路层 数据链路层 物理层 链路层&#xff1a;传数据帧&#xff0…...

GPU虚拟化技术在深度学习集群中的应用实践

一、深度学习集群的算力困境 某些985高校AI实验室曾面临典型算力管理难题&#xff1a;其配备的4台8卡A100服务器&#xff08;总价值超300万元&#xff09;实际利用率仅38%。学生提交的PyTorch任务常因GPU抢占导致训练中断&#xff0c;而部分研究组独占显卡却仅运行Jupyter Not…...

从零实现基于扩散模型的文本到视频生成系统:技术详解与Pytorch代码实现

本文详细介绍了基于扩散模型构建的文本到视频生成系统&#xff0c;展示了在MSRV-TT和Shutterstock视频标注数据集上训练的模型输出结果。以下是模型在不同提示词下的生成示例。 首先展示一些模型生成效果展示 提示词&#xff1a;“A person holding a camera”&#xff08;训练…...

每天学一个 Linux 命令(14):cat

Linux 文件查看与合并命令:cat cat(全称 concatenate)是 Linux 中用于查看文件内容、合并文件或创建简单文件的基础命令。它操作简单但功能灵活,是日常文件处理的常用工具。 1. 命令作用 查看文件内容:直接输出文件内容到终端。合并文件:将多个文件内容合并输出或保存到…...

05--MQTT物联网协议

一、MQTT的概念 MQTT 协议快速入门 2025&#xff1a;基础知识和实用教程 | EMQ 1.MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级、基于发布-订阅模式的消息传输协议&#xff0c;适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它…...

免费下载 | 2025天津大学:智能制造与数字孪生技术:面向可持续制造方向发展

一、新一代智能制造模式下的思考 当代智能制造的发展阶段 智能制造定义&#xff1a;智能制造是基于新一代信息通信技术与先进制造技术深度融合&#xff0c;贯穿于设计、生产、管理、服务等制造活动的各个环节&#xff0c;具有自感知、自学习、自决策、自执行、自适应等功能的新…...

考研单词笔记 2025.04.12

aware a知道的&#xff0c;意识到的&#xff0c;警觉的 awareness n意识&#xff0c;了解&#xff0c;觉察 conscious a有意识的&#xff0c;意识到的&#xff0c;有意的&#xff0c;刻意的&#xff0c;神志清醒的&#xff0c;慎重的&#xff0c;关注的 unconscious a无意识…...

八股总结(Java)持续更新!

八股总结&#xff08;java&#xff09; ArrayList和LinkedList有什么区别 ArrayList底层是动态数组&#xff0c;LinkedList底层是双向链表&#xff1b;前者利于随机访问&#xff0c;后者利于头尾插入&#xff1b;前者内存连续分配&#xff0c;后者通过指针连接多块不连续的内存…...

SpringBoot3快速入门笔记

springboot3简介 SpringBoot 帮我们简单、快速地创建一个独立的、生产级别的 Spring 应用&#xff08;说明&#xff1a;SpringBoot底层是Spring&#xff09; 大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术 特性&#xff1a; ● 快速创建…...

vue3中,element-plus中el-input的v-model和value的用法示例

el-input的v-model&#xff0c;邦定响应式变量 <el-col :span"6"><el-form-item label"检验类别" prop"verifyType"><el-input v-model"applyAllInfo.applyBasicInfo.verifyTypeName" readonly /></el-form-item…...

python求π近似值

【问题描述】用公式π/4≈1-1/31/5-1/7..1/(2*N-1).求圆周率PI的近似值。 从键盘输入一个整数N值&#xff0c;利用上述公式计算出π的近似值&#xff0c;然后输出π值&#xff0c;保留小数后8位。 【样例输入】1000 【样例输出】3.14059265 def countpi(N):p0040nowid0for i i…...

Gerapy二次开发:搜索器组件设计开发与应用(Vue父子组件通信)

搜索器组件设计开发与应用 写在前面搜索器字段定义与样式设计具体实现components/Search.vuedeploy/Index.vue后端views.py运行效果总结欢迎加入Gerapy二次开发教程专栏! 本专栏专为新手开发者精心策划了一系列内容,旨在引领你深入探索Gerapy框架的二次迭代之旅。 本专栏将全…...

深入解析Python爬虫技术:从基础到实战的功能工具开发指南

一、引言:Python 爬虫技术的核心价值 在数据驱动的时代,网络爬虫作为获取公开数据的重要工具,正发挥着越来越关键的作用。Python 凭借其简洁的语法、丰富的生态工具以及强大的扩展性,成为爬虫开发的首选语言。根据 Stack Overflow 2024 年开发者调查,68% 的专业爬虫开发者…...

Python爬虫-爬取全球股市涨跌幅和涨跌额数据

前言 本文是该专栏的第52篇,后面会持续分享python爬虫干货知识,记得关注。 本文中,笔者将基于Python爬虫,实现批量采集全球股市行情(亚洲,美洲,欧非,其他等)的各股市“涨跌幅”以及“涨跌额”数据。 具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。…...

【NLP 59、大模型应用 —— BPE 算法】

你和生生不息的河流&#xff0c;生动了我人生中的美好瞬间 —— 25.4.11 一、词表的构造问题 为了nlp模型训练&#xff0c;词表&#xff08;字表&#xff09;是必要的 统计训练语料中的所有字符&#xff08;或词&#xff09;是一种做法&#xff0c;但是容易出现一些问题&…...

SQL基础入门:从CRUD到JOIN再到索引(通俗易懂版)

一、为什么需要SQL&#xff1f; 想象你在管理一个图书馆&#xff1a; 传统方法&#xff1a;手动记录每本书的位置、借阅者、归还日期SQL方法&#xff1a;用数据库系统自动管理&#xff0c;快速查询《Java编程思想》在哪个书架 SQL&#xff08;Structured Query Language&…...

系统编程1(进程的概念与原理)

进程的概念与原理 计算机组成部分一般遵循冯诺依曼结构&#xff0c;也就是由控制器、运算器、存储器、输入设备、输出设备五个部分组成。 ⦁ 程序的编译 一般在编写出程序之后&#xff0c;并不能直接运行&#xff0c;而是需要把程序通过编译器进行编译&#xff0c;生成可执行…...

Git基础知识

Git基础知识 目录 一、Git简介 1.1 什么是Git&#xff1f;1.2 基本概念1.3 Git与其他版本控制系统的区别 二、Git安装与配置 2.1 安装Git2.2 基础配置2.3 高级配置2.4 多账户配置 三、基本操作 3.1 创建仓库3.2 基本工作流3.3 分支操作3.4 查看历史 四、高级操作 4.1 撤销修改…...

【Flink运行时架构】核心组件

在Flink的运行架构中&#xff0c;有两大比较重要的组件&#xff1a;作业管理器&#xff08;JobManager&#xff09;和任务管理器&#xff08;TaskManager&#xff09;。 Flink的作业提交与任务处理时的系统如下图所示。 其中&#xff0c;客户端并不是处理系统的一部分&#xff…...

【区块链安全 | 第四十篇】合约审计之delegatecall(二)

文章目录 漏洞代码代码分析攻击流程攻击代码前文重现修复建议审计思路 在阅读本文之前&#xff0c;请确保已先行阅读&#xff1a;【区块链安全 | 第三十九篇】合约审计之delegatecall&#xff08;一&#xff09; 漏洞代码 存在一漏洞代码如下&#xff1a; // 库合约&#xf…...

Redis实现分布式定时任务

设计思路 任务表示&#xff1a;每个任务通过一个特定格式的键来表示。键名可以包含任务ID等信息&#xff0c;值可以是任务的具体内容或指向任务详情的引用。过期机制&#xff1a;利用Redis的EXPIRE命令为任务设置过期时间&#xff0c;当到达设定的时间点时&#xff0c;Redis会…...

ERC20合约的基本调用

文章目录 ERC20合约的基本调用合约功能compile.js 代码读取文件 进行合约编译获取二进制对象导出对象 index.js 代码编译合约读取私钥设置收款账户构造 web3 对象获取账户地址获取 abi 和 bin创建合约交易部署合约构造转账交易验证转账后余额 测试项目目录执行查询 ERC20合约的…...

『Kubernetes(K8S) 入门进阶实战』实战入门 - Pod 详解

『Kubernetes(K8S) 入门进阶实战』实战入门 - Pod 详解 Pod 结构 每个 Pod 中都可以包含一个或者多个容器&#xff0c;这些容器可以分为两类 用户程序所在的容器&#xff0c;数量可多可少Pause 容器&#xff0c;这是每个 Pod 都会有的一个根容器&#xff0c;它的作用有两个 可…...

【React框架】什么是 Vite?如何使用vite自动生成react的目录?

什么是 Vite&#xff1f; Vite 是一个基于原生 ES Modules 开发的前端构建工具&#xff0c;由 Evan You&#xff08;Vue 的作者&#xff09;开发。它最大的特点包括&#xff1a; 极速冷启动&#xff1a;因为利用了浏览器原生的 ES Modules&#xff0c;所以在开发时无需等待整…...

JS实现文件点击或者拖拽上传

B站看到了渡一大师课的切片&#xff0c;自己实现了一下&#xff0c;做下记录 效果展示 分为上传前、上传中和上传后 实现 分为两步 界面交互网络请求 源码如下 upload.html <!DOCTYPE html> <html lang"zh-CN"><head><meta charset&q…...

【Vue #3】指令补充样式绑定

一、指令修饰符 Vue 的指令修饰符&#xff08;Directive Modifiers&#xff09;是 Vue 模板语法中的重要特性&#xff0c;它们以半角句号 . 开头&#xff0c;用于对指令的绑定行为进行特殊处理 修饰符作用如下&#xff1a; 简化事件处理&#xff08;如阻止默认行为、停止冒泡…...

Vue.js组件安全工程化演进:从防御体系构建到安全性能融合

——百万级流量场景下的安全组件架构与源码级解决方案 文章目录 总起&#xff1a;安全工程化的组件革命 分论&#xff1a; 一、现存组件架构的七宗罪与安全改造路径   1.1 组件生态安全赤字现状   1.2 架构级安全缺陷深度剖析   1.3 性能与安全的死亡螺旋 二、百万级…...

LINUX基础 [二] - Linux常见指令

目录 &#x1f4bb;前言 &#x1f4bb;指令 &#x1f3ae;ls指令 &#x1f3ae;pwd指令 &#x1f3ae;whoami指令 &#x1f3ae;cd指令 &#x1f3ae;clear指令 &#x1f3ae;touch指令 &#x1f3ae;mkdir指令 &#x1f3ae;rmdir指令 &#x1f3ae;rm指令 &#…...