【数学建模美赛M奖速成系列】Matplotlib绘图技巧(一)

Matplotlib图像基础

  • 写在前面
  • 1 基本绘图实例:sin、cos函数图
  • 2 plot()函数详解
    • **kwargs参数:
  • 3 matplotlib中绘图的默认配置
  • 4 设置图的横纵坐标的上下界
  • 5 设置横纵坐标上的记号
  • 6 调整图像的脊柱
  • 7 添加图例
  • 8 给一些特殊点加注释
  • 9 子图
  • 最后

写在前面

前面我们讲过,好的图表在论文写作中是相当重要的,这里学姐为大家整理了一些Matplotlib快速入门内容以及论文绘图的技巧,帮助大家快速学习绘图。这里整理了完整的文档与技巧,有需要的同学看下面,另外,如果没有美赛经验想要获奖,欢迎咨询哦~

1 基本绘图实例:sin、cos函数图

from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 256,
endpoint=True)
c, s = np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
show()

在这里插入图片描述

2 plot()函数详解

调用形式一般为:

plot([x], y, [fmt], data=None, *kwargs)
plot([x], y, [fmt], [x2], y2, [fmt2],,
*kwargs)

其中可选参数[fmt]是一个字符串,用于定义图的基本属性:颜色(color)、点型(marker)、线型(linestyle)
具体形式为:

fmt = [color][marker][linestyle]
注意这里的三个属性只能是每个属性的单个字母缩写,若属性用的是全名则不能用[fmt]

**kwargs参数:

  • x: x轴数据
  • y: y轴数据
  • linewidth: 线宽
  • color:线条颜色

在这里插入图片描述

  • marker: 标记风格

在这里插入图片描述

  • linestyle: 线条样式

在这里插入图片描述

  • markerfacecolor 标记颜色
  • markersize 标记大小
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 256,
endpoint=True)
c, s = np.cos(x), np.sin(x)
plt.plot(x, c, 'b|-')
plt.plot(x, s)
show()

在这里插入图片描述

3 matplotlib中绘图的默认配置

from pylab import *
import numpy as np
import matplotlib.pylab as plt
# 创建一个8*6(point)的图,并设置分辨率为80
figure(figsize=(8, 6), dpi=80)
# 创建一个新的1*1的子图,接下来的图样绘制在其中的第一块中
subplot(1, 1, 1)
# 得到坐标点(x,y)坐标
X = np.linspace(-np.pi, np.pi, 256,
endpoint=True)
C, S = np.cos(X), np.sin(X)
# 绘制余弦曲线,使用蓝色的、连续的、宽度为1的线条
plot(X, C, color='blue', linewidth=2.5,
linestyle='-')
# 绘制正弦曲线,使用绿色的、连续的、宽度为1的线条
plot(X, S, color='green', linewidth=2.0,
linestyle='-')
# 设置横轴的上下限
xlim(-4.0, 4.0)
# 设置横轴记号
xticks(np.linspace(-4, 4, 9, endpoint=True),
fontproperties='Times New Roman', size=20)
# 设置纵轴记号
yticks(np.linspace(-1, 1, 5, endpoint=True))
#设置横纵坐标的名称以及对应字体格式
font = {'family' : 'Times New Roman',
'weight' : 'normal',
'size' : 20,
}
# 设置横轴标签
plt.xlabel('X axis', font)
# 设置纵轴标签
plt.ylabel('Y axis', font)
# 设置图像标题
plt.title('Demo Figure', font)
# 以分辨率72来保存图片
savefig('demo.png', dpi=72)
# 在屏幕上显示
show()

在这里插入图片描述

4 设置图的横纵坐标的上下界

xlim(), ylim()
from pylab import *
import numpy as np
# 得到坐标点(x,y)坐标
X = np.linspace(-np.pi, np.pi, 256,
endpoint=True)
C, S = np.cos(X), np.sin(X)
x_min, x_max = X.min(), X.max()
c_min, c_max = C.min(), C.max()
s_min, s_max = S.min(), C.max()
y_min, y_max = min(c_min, s_min), max(c_max,
s_max)
# 设置横纵坐标上下界的偏移量,这样能够完整的显示图像且最美观
dx = (x_max - x_min) * 0.2
dy = (y_max - y_min) * 0.2
# 设置上下限
xlim(x_min - dx, x_max + dx)
ylim(y_min - dy, y_max + dy)
# 绘制余弦曲线,使用蓝色的、连续的、宽度为2.5的线条
plot(X, C, color='blue', linewidth=2.5,
linestyle='-')
# 绘制正弦曲线,使用绿色的、连续的、宽度为2.0的线条
plot(X, S, color='green', linewidth=2.0,
linestyle='-')
show()

在这里插入图片描述

5 设置横纵坐标上的记号

xticks(), yticks()

这两个函数的用处在于指明横纵轴需要显示的内容和显示内容的位置,参数的值可以有两种情况:

  • 当横纵坐标的值为普通的数字时:参数为一个list,list中的元素为数字,此时两个函数的参数只需要这一个list
  • 当横纵坐标的值为公式(使用的latex中的公式表示,如’pipipi’)或其他和当前的坐标值不同的值时:参数为两个list,第一个list为普通数字对应的是纵坐标值,第二个list为第一个list中纵坐标位置对应要显示的值,可以是公式也可以是其他和当前纵坐标值不同的表示
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 256,
endpoint=True)
c, s = np.cos(x), np.sin(x)
xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$',
r'$+\pi$'])
yticks([-1, 0, +1],
[r'$-1$', r'$0$', r'$+1$'])
plt.plot(x, c)
plt.plot(x, s)
show()

在这里插入图片描述

6 调整图像的脊柱

坐标轴和上面的记号连在一起就形成了脊柱(Spines,一条线段上又一系列凸起,是不是很像脊柱),它记录了数据区域的范围,它们可以放在任意位置,不过默认是放在图的四边。
实际上每幅图都有四条脊柱(上下左右),为了将脊柱放在图的中间,我们必须将其中的两条(上和右)设置为无色,然后调整剩下的两条到合适的位置——数据空间的0点。

from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 256,
endpoint=True)
c, s = np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
# 设置坐标轴gca(),获取坐标轴信息
ax = gca()
'''
使用ax.spines[]选定边框,使用set_color()将选定的边框的颜
色设为 none
'''
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
'''
移动坐标轴,将bottom即x坐标轴移动到y=0的位置
ax.xaixs为x轴,set_ticks_position()用于从上下左右
(top/bottom/left/right)四条脊柱中选择一个作为x轴
使用set_position()设置边框位置:y=0的位置。位置的所有属性
包括:outward、axes、data
'''
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
'''
将left 即y坐标轴设置到x=0的位置
'''
ax.yaxis.set_ticks_position('left') # 选定y轴
ax.spines['left'].set_position(('data', 0))
plt.show()

在这里插入图片描述

7 添加图例

在 plot() 函数中增加一个参数 label ,再通过 legend()函数显示图例

from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 256,
endpoint=True)
c, s = np.cos(x), np.sin(x)
plt.plot(x, c, label='cosine')
plt.plot(x, s, label='sine')
plt.legend(loc='upper left')
plt.show()

在这里插入图片描述

8 给一些特殊点加注释

scatter(x, y, s=None, c=None, marker=None,
cmap=None, norm=None, vmin=None, vmax=None,
alpha=None, linewidths=None, verts=None,
edgecolors=None, hold=None, data=None, *kwargs)
x - x 值
向量
y - y 值
向量
sz - 标记面积
36 (默认) | 数值标量 | 行或列向量 | []
c - 标记颜色
[0 0 1] (默认) | RGB 三元数 |RGB 三元数组成的三列
矩阵 | 向量 | 'r' | 'g' | 'b' | .
mkr - 标记类型
'o' (默认) | '+' | '*' | '.' | 'x' | .
'filled' - 用于填充标记内部的选项
ax - 目标坐标区
Axes 对象 | PolarAxes 对象
'MarkerEdgeColor' - 标记轮廓颜色
'flat' (默认) | 'none' | RGB 三元数 | 'r' | 'g' |
'b' | .
'MarkerFaceColor' - 标记填充颜色
'none' (默认) | 'flat' | 'auto' | RGB 三元数 | 'r'
| 'g' | 'b' | .
'LineWidth' - 标记边缘的宽度
0.5 (默认) | 正值
s - Scatter 对象
Scatter 对象

函数用于在图像中绘制散点

参数:

  • x/y:都是向量形式,且维度相同,分别对应坐标点的横纵坐标
  • scalar: 标记大小,以平方磅为单位的标记面积,可以有一下形式:
    • 数值标量 : 以相同的大小绘制所有标记。
    • 行或列向量 : 使每个标记具有不同的大小。x、y 和 sz中的相应元素确定每个标记的位置和面积。sz 的长度必须等于 x 和 y 的长度。
    • [] : 使用 36 平方磅的默认面积。
  • color:标记的颜色,有下列不同的赋值方式:
    • RGB 三元数或颜色名称 - 使用相同的颜色绘制所有标记。
    • 由 RGB 三元数组成的三列矩阵 - 对每个标记使用不同的颜色。矩阵的每行为对应标记指定一种 RGB 三元数颜色。行数必须等于 x 和 y 的长度
    • 向量 - 对每个标记使用不同的颜色,并以线性方式将 c 中的值映射到当前颜色图中的颜色。c 的长度必须等于 x 和y 的长度。要更改坐标区的颜色图,请使用 colormap 函数。如果散点图中有三个点,并且您希望这些颜色成为颜色图的索引,请以三元素列向量的形式指定 c。
    • 在这里插入图片描述
cnames = {
'aliceblue': '#F0F8FF',
'antiquewhite': '#FAEBD7',
'aqua': '#00FFFF',
'aquamarine': '#7FFFD4',
'azure': '#F0FFFF',
'beige': '#F5F5DC',
'bisque': '#FFE4C4',
'black': '#000000',
'blanchedalmond': '#FFEBCD',
'blue': '#0000FF',
'blueviolet': '#8A2BE2',
'brown': '#A52A2A',
'burlywood': '#DEB887',
'cadetblue': '#5F9EA0',
'chartreuse': '#7FFF00',
'chocolate': '#D2691E',
'coral': '#FF7F50',
'cornflowerblue': '#6495ED',
'cornsilk': '#FFF8DC',
'crimson': '#DC143C',
'cyan': '#00FFFF',
'darkblue': '#00008B',
'darkcyan': '#008B8B',
'darkgoldenrod': '#B8860B',
'darkgray': '#A9A9A9',
'darkgreen': '#006400',
'darkkhaki': '#BDB76B',
'darkmagenta': '#8B008B',
'darkolivegreen': '#556B2F',
'darkorange': '#FF8C00',
'darkorchid': '#9932CC',
'darkred': '#8B0000',
'darksalmon': '#E9967A',
'darkseagreen': '#8FBC8F',
'darkslateblue': '#483D8B',
'darkslategray': '#2F4F4F',
'darkturquoise': '#00CED1',
'darkviolet': '#9400D3',
'deeppink': '#FF1493',
'deepskyblue': '#00BFFF',
'dimgray': '#696969',
'dodgerblue': '#1E90FF',
'firebrick': '#B22222',
'floralwhite': '#FFFAF0',
'forestgreen': '#228B22',
'fuchsia': '#FF00FF',
'gainsboro': '#DCDCDC',
'ghostwhite': '#F8F8FF',
'gold': '#FFD700',
'goldenrod': '#DAA520',
'gray': '#808080',
'green': '#008000',
'greenyellow': '#ADFF2F',
'honeydew': '#F0FFF0',
'hotpink': '#FF69B4',
'indianred': '#CD5C5C',
'indigo': '#4B0082',
'ivory': '#FFFFF0',
'khaki': '#F0E68C',
'lavender': '#E6E6FA',
'lavenderblush': '#FFF0F5',
'lawngreen': '#7CFC00',
'lemonchiffon': '#FFFACD',
'lightblue': '#ADD8E6',
'lightcoral': '#F08080',
'lightcyan': '#E0FFFF',
'lightgoldenrodyellow': '#FAFAD2',
'lightgreen': '#90EE90',
'lightgray': '#D3D3D3',
'lightpink': '#FFB6C1',
'lightsalmon': '#FFA07A',
'lightseagreen': '#20B2AA',
'lightskyblue': '#87CEFA',
'lightslategray': '#778899',
'lightsteelblue': '#B0C4DE',
'lightyellow': '#FFFFE0',
'lime': '#00FF00',
'limegreen': '#32CD32',
'linen': '#FAF0E6',
'magenta': '#FF00FF',
'maroon': '#800000',
'mediumaquamarine': '#66CDAA',
'mediumblue': '#0000CD',
'mediumorchid': '#BA55D3',
'mediumpurple': '#9370DB',
'mediumseagreen': '#3CB371',
'mediumslateblue': '#7B68EE',
'mediumspringgreen': '#00FA9A',
'mediumturquoise': '#48D1CC',
'mediumvioletred': '#C71585',
'midnightblue': '#191970',
'mintcream': '#F5FFFA',
'mistyrose': '#FFE4E1',
'moccasin': '#FFE4B5',
'navajowhite': '#FFDEAD',
'navy': '#000080',
'oldlace': '#FDF5E6',
'olive': '#808000',
'olivedrab': '#6B8E23',
'orange': '#FFA500',
'orangered': '#FF4500',
'orchid': '#DA70D6',
'palegoldenrod': '#EEE8AA',
'palegreen': '#98FB98',
'paleturquoise': '#AFEEEE',
'palevioletred': '#DB7093',
'papayawhip': '#FFEFD5',
'peachpuff': '#FFDAB9',
'peru': '#CD853F',
'pink': '#FFC0CB',
'plum': '#DDA0DD',
'powderblue': '#B0E0E6',
'purple': '#800080',
'red': '#FF0000',
'rosybrown': '#BC8F8F',
'royalblue': '#4169E1',
'saddlebrown': '#8B4513',
'salmon': '#FA8072',
'sandybrown': '#FAA460',
'seagreen': '#2E8B57',
'seashell': '#FFF5EE',
'sienna': '#A0522D',
'silver': '#C0C0C0',
'skyblue': '#87CEEB',
'slateblue': '#6A5ACD',
'slategray': '#708090',
'snow': '#FFFAFA',
'springgreen': '#00FF7F',
'steelblue': '#4682B4',
'tan': '#D2B48C',
'teal': '#008080',
'thistle': '#D8BFD8',
'tomato': '#FF6347',
'turquoise': '#40E0D0',
'violet': '#EE82EE',
'wheat': '#F5DEB3',
'white': '#FFFFFF',
'whitesmoke': '#F5F5F5',
'yellow': '#FFFF00',
'yellowgreen': '#9ACD32'}
  • marker: 标记样式

在这里插入图片描述

  • edgecolors: 轮廓颜色,参数形式和color类似
  • alpha: 透明度,值在[0, 1]范围内,1表示不透明,0表示透明
  • linewidths: 线宽,表示标记边缘的宽度,默认是"face"
  • cmap: 自定义色彩盘,实际上就是一个三列的矩阵,shape为 [N,3][N, 3][N,3],一个实例可以参考matplotlib使用自己想要的color map

annotate(s, xy, *args, **kwargs)
函数用于在图形上给数据点添加文本注解,而且支持带箭头的划线工具,方便我们在合适的位置添加描述信息。具体的内容可以参考Matplotlib中的annotate用法
参数:

  • s: 注释文本中的内容
  • color: 注释文本的颜色
  • xy: 被注释的坐标点,二维元组形式(x, y)
  • xytext: 注释文本的坐标点,也是二维元组(x, y)形式
  • xycoords: 被注释的坐标系属性,允许输入的值如下图:
    在这里插入图片描述
  • textcoords: 注释文本的坐标系属性,默认与xycoords属性值相同,除了允许输入xycoords的属性值,还允许输入以下两种:

在这里插入图片描述

  • arrowprops: 用于标注的箭头的样式,这个参数是一个dict类型的数据。如果该属性为空,则会在注释文本和被注释点之间画一个箭头。箭头的样式可以通过 arrowstyle 关键字来指定默认的可选类型, arrowstyle 关键字包含的默认类型包括以下:
    在这里插入图片描述
    如果没有 arrowstyle 关键字,则箭头的样式可以由以下关键字指定(注意 arrowstyle 和以下关键字不能同时存在)
    在这里插入图片描述
    箭头、坐标点和注释文本之间的关系属性包括如下图。其中connectionstyle属性用于控制注释点和注释文本之间的连接线的属性,比如弧度,角度之类的信息,这里还不是太清楚。
    在这里插入图片描述
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 256,
endpoint=True)
c, s = np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
# 调整图像的脊柱
ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left') # 选定y轴
ax.spines['left'].set_position(('data', 0))
# 在2*np.pi/3的位置给两条函数曲线加上一个注释
t = 2 * np.pi / 3
plt.plot([t, t], [0, np.cos(t)], color='blue',
linewidth=2.5,linestyle=' -')
scatter([t, ], [np.cos(t), ], 50, color='blue')
annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}
{2}$',
xy=(t, np.sin(t)), xycoords='data',
xytext=(+10, +30), textcoords='offset
points', fontsize=16,
arrowprops=dict(arrowstyle="->",
connectionstyle="arc3,rad=.2"))
plot([t,t],[0,np.sin(t)], color ='red',
linewidth=2.5, linestyle=" -")
scatter([t,],[np.sin(t),], 50, color ='red')
annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}
{2}$',color='green',
xy=(t, np.cos(t)), xycoords='data',
xytext=(-90, -50), textcoords='offset
points', fontsize=16,
arrowprops=dict(arrowstyle="->",
connectionstyle="arc3,rad=.2")) # arc, angle,
armA, rad
show()

在这里插入图片描述

9 子图

图像的属性包括以下几个:
在这里插入图片描述

from pylab import *
'''
subplot()函数的参数中,除最后一维的其他维表示子图的大小,最
后一维表示当前子图在图像中的位置,如下实例,在2*2的网格里,
第四个子图为(2, 2, 4)
创建横跨多个位置的子图用gridspec实现
'''
"""
添加多个固定大小的子图:
fig = plt.figure(figsize=(10, 10), dpi=80,
facecolor='red')
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 4)
ax1.plot() .
ax2.plot() .
"""
subplot(2,2,1)
xticks([]), yticks([])
text(0.5,0.5,
'subplot(2,2,1)',ha='center',va='center',size=20,
alpha=.5)
subplot(2,2,2)
xticks([]), yticks([])
text(0.5,0.5,
'subplot(2,2,2)',ha='center',va='center',size=20,
alpha=.5)
subplot(2,2,3)
xticks([]), yticks([])
text(0.5,0.5,
'subplot(2,2,3)',ha='center',va='center',size=20,
alpha=.5)
subplot(2,2,4)
xticks([]), yticks([])
text(0.5,0.5,
'subplot(2,2,4)',ha='center',va='center',size=20,
alpha=.5)
# savefig(' ./figures/subplot-grid.png', dpi=64)
show()

在这里插入图片描述

from pylab import *
import matplotlib.gridspec as gridspec
# gridspec的用法,可以使图像横跨多个坐标
G = gridspec.GridSpec(3, 3)
axes_1 = subplot(G[0, :])
xticks([]), yticks([])
text(0.5,0.5, 'Axes
1',ha='center',va='center',size=24,alpha=.5)
axes_2 = subplot(G[1,:-1])
xticks([]), yticks([])
text(0.5,0.5, 'Axes
2',ha='center',va='center',size=24,alpha=.5)
axes_3 = subplot(G[1:, -1])
# 确定了这个子图的位置之后,就可以直接在上面画图,直到创建了
下个新的子图
x = np.linspace(-np.pi, np.pi, 256,
endpoint=True)
c, s = np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
#xticks([]), yticks([])
#text(0.5,0.5, 'Axes
3',ha='center',va='center',size=24,alpha=.5)
axes_4 = subplot(G[-1,0])
xticks([]), yticks([])
'''
text()函数用于在图像上的特定位置加上一些文本,用于注释
'''
text(0.5,0.5, 'Axes
4',ha='center',va='center',size=24,alpha=.5)
axes_5 = subplot(G[-1,-2])
xticks([]), yticks([])
text(0.5,0.5, 'Axes
5',ha='center',va='center',size=24,alpha=.5)
#plt.savefig(' ./figures/gridspec.png', dpi=64)
show()

在这里插入图片描述

from pylab import *
'''
使用axes()函数来确定当前子图的位置和大小,参数为一个
list[x, y, width, height],
x,y为当前子图的左下角坐标位置,width为子图的宽度,
height为子图的高度
'''
axes([0.1,0.1,0.8,0.8])
xticks([]), yticks([])
text(0.6,0.6,
'axes([0.1,0.1,.8,.8])',ha='center',va='center',s
ize=20,alpha=.5)
axes([0.2,0.2,.3,.3])
x = np.linspace(-np.pi, np.pi, 256,
endpoint=True)
c, s = np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
# xticks([]), yticks([])
# text(0.5,0.5,
'axes([0.2,0.2,.3,.3])',ha='center',va='center',s
ize=16,alpha=.5)
# plt.savefig(" ./figures/axes.png",dpi=64)
show()

在这里插入图片描述

from pylab import *
axes([0.1,0.1,.5,.5])
xticks([]), yticks([])
text(0.1,0.1,
'axes([0.1,0.1,.5,.5])',ha='left',va='center',siz
e=16,alpha=.5)
axes([0.2,0.2,.5,.5])
xticks([]), yticks([])
text(0.1,0.1,
'axes([0.2,0.2,.5,.5])',ha='left',va='center',siz
e=16,alpha=.5)
axes([0.3,0.3,.5,.5])
x = np.linspace(-np.pi, np.pi, 256,
endpoint=True)
c, s = np.cos(x), np.sin(x)
plt.plot(x, c)
plt.plot(x, s)
# xticks([]), yticks([])
# text(0.1,0.1,
'axes([0.3,0.3,.5,.5])',ha='left',va='center',siz
e=16,alpha=.5)
axes([0.4,0.4,.5,.5])
xticks([]), yticks([])
text(0.1,0.1,
'axes([0.4,0.4,.5,.5])',ha='left',va='center',siz
e=16,alpha=.5)
# plt.savefig(" ./figures/axes-2.png",dpi=64)
show()

最后

这里整理了完整的文档与技巧,有需要的同学看下面,另外,如果没有美赛经验想要获奖,欢迎咨询哦~
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/271655.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云上安全责任共担模型

对于传统自建物理服务器模式,用户需要承担所有的安全责任,负责从物理基础设施到上层应用的所有层面的安全体系构建。 云服务器的安全责任确实与物理服务器不同,云上的安全性是一种责任共担模式,其中云服务器ECS的安全责任需要你&…

Qt/C++音视频开发61-多屏渲染/一个解码渲染到多个窗口/画面实时同步

一、前言 多屏渲染就是一个解码线程对应多个渲染界面,通过addrender这种方式添加多个绘制窗体,我们经常可以在展会或者卖电视机的地方可以看到很多电视播放的同一个画面,原理应该类似,一个地方负责打开解码播放,将画面…

颗粒物PM2.5在建筑室外环境的污染扩散传播CFD模拟仿真

颗粒物PM2.5在建筑室外环境的污染扩散传播CFD模拟仿真 一、引言 随着城市化进程的加速,室外环境中的颗粒物污染问题日益严重。颗粒物在建筑室外环境中的扩散传播受到多种因素的影响,如风速、湍流、建筑物布局等。计算流体动力学(CFD)模拟作为一种有效的预测工具,可以模拟…

深度学习(九):bert之代码实现

bert之代码实现 任务1: Masked LM任务2:下一句预测代码实现预训练模型模型数据集配置训练评估预测 结果 任务1: Masked LM 即随机屏蔽(masking)部分输入token,然后只预测那些被屏蔽的token。在模型中,随机地屏蔽了每个…

代码随想录算法训练营Day9 | 20.有效的括号、1047.删除字符串中的所有相邻重复项、150.逆波兰表达式求值

LeetCode 20 有效的括号 本题思路:利用栈来完成,如果遇到左括号类型就放入栈,如果遇到右括号类型,就弹出栈顶的元素和该元素进行匹配,如果不匹配就返回 false。 注意点: 第一个就是右括号类型,那…

SQL数据工程师面试题20231226

1、数据库知识: 表一:Stock(商品库存入库表) 商品编号 入库数量 描述 A 300 A B 400 B C 200 C 注: Stock 表的商品编号是唯一主键。 表二: OutStock(商品库存出库表) 商品编号 出库数量 描述 A 100 A B 40 B B 50 B 注: outStock 表同一个商品存在多次出库。 – 创建 Stoc…

2023开发原子开放者大会:AI时代的前端开发,挑战与机遇并存

前言 12月16日,以“一切为了开发者”为主题的开放原子开发者大会在江苏省无锡市开幕。江苏省工业和信息化厅厅长朱爱勋、中国开源软件推进联盟主席陆首群等领导和专家参加开幕式,工业和信息化部信息技术发展司副司长王威伟、江苏省工业和信息化厅副厅长…

【力扣题解】P589-N叉树的前序遍历-Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P589-N叉树的前序遍历🌏题目描述💡题解🌏总结 【力…

张驰咨询:如何战胜实施精益生产培训的常见难题?

精益生产又称作“Lean Manufacturing”或“Lean Production”,它是一种强调消除生产过程中一切形式的浪费,注重流程优化以提升整体效能的管理哲学。源自丰田生产系统(Toyota Production System),精益生产培训目标在于最…

Jenkins下载安装教程(Windows)

Jenkins下载安装教程(Windows) 1. 配置JDK 前置条件:必须先安装JDK : JDK安装教程(Windows) 2. 下载Jenkins 下载安装包:Jenkins安装包下载链接 3. 安装Jenkins 选择Jenkins的安装路径: …

virtualBox 在ubuntu 22.04 中自动安装安装增强功能不生效的解决方法

virtualBox 在ubuntu 22.04 中自动安装安装增强功能不生效的解决方法 step 开启双向剪切板复制粘贴支持step2 在设备面板安装增强功能安装后不生效如果选项卡中无设备菜单 step 开启双向剪切板复制粘贴支持 virtualBox界面依次点击:控制---->设置—>高级—>双向—>…

elasticsearch 笔记二:搜索DSL 语法(搜索API、Query DSL)

文章目录 一、搜索 API1. 搜索 API 端点地址2. URI Search3. 查询结果说明5. 特殊的查询参数用法6. Request body Search6.1 query 元素定义查询6.2 指定返回哪些内容**6.2.1 source filter 对_source 字段进行选择****6.2.2 stored_fields 来指定返回哪些 stored 字段****6.2.…

Windows操作系统:共享文件夹,防火墙的设置

1.共享文件夹 1.1 共享文件夹的优点 1.2 共享文件夹的优缺点 1.3 实例操作 ​编辑 2.防火墙设置 2.1 8080端口设置 3.思维导图 1.共享文件夹 1.1 共享文件夹的优点 优点 协作和团队合作:共享文件夹使多个用户能够在同一文件夹中协作和编辑文件。这促进了团…

每日一练2023.12.25——验证身份【PTA】

题目链接 :验证身份 题目要求: 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5&a…

脱壳后多dex文件合并进apk反编译

我们遇到加固后的apk,在脱壳后有很多dex文件,有时候我们只反编译有关键代码的dex会存在一些上下文代码找不到的情况,这时候我们需要多dex一起反编译,并且需要同步看看资源文件怎么办?: 我们可以把多dex塞回…

python写一个windows消息提醒小软件

一、需求 上班时,由于自己经常coding到忘记时间,经常会一坐坐很久,搞的劳资腰都不好了,所以没事闲的写了个久坐提醒的小程序。 二、功能描述 能设置时间间隔,过了间隔时间windows发出提醒消息,能定制消息…

【SD】IP-Adapter 进阶 骨骼绑定 同款人物【2】

测试模型:###最爱的模型\flat2DAnimerge_v30_2.safetensors [b2c93e7a89] 原图: 加入 control1 [IP-Adapter] 加入 control 2 [OpenPose] 通过openpose骨骼图修改人物动作。 加入 control 3 lineart 加入cotrol3 …

希尔排序详解(C语言)

前言 希尔排序是一种基于插入排序的快速排序算法。所以如果还会插入排序的小伙伴可以点击链接学习一下插入排序(点我点我!) ,相较于插入排序,希尔排序拥有更高的效率,小伙伴们肯定已经迫不及待学习了吧&…

TikTok真题第5天 | 386. 字典序排数、785.判断二分图、886.可能的二分法

386. 字典序排数 题目链接:386.exicographical-numbers 解法: 解法1:DFS,也就是回溯。第一层从1开始,遍历到9,而后面层的循环,也就是递归,从0遍历到9。如果当前节点的数大于n了&a…

某ZF型酒店警卫队精细化管理项目成功案例纪实

——建立治安联防体系及事故处理预案,全面保障领导安全 警卫队是招待所不可或缺的一部分,他们的合理设置能够保障人员的生命和财产安全。然而对于警卫队的管理存在着许多问题:警卫的素质不高、没有责任心、应急能力不高以及岗位设置上的不合理…
最新文章