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

【数学建模美赛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()

最后

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

在这里插入图片描述

相关文章:

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

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

005、数据类型

1. 关于数据类型 Rust中,每个值都有其特定的数据类型,Rust会根据数据的类型来决定如何处理它们。 Rust是一门静态类型语言,它在编译程序的过程中就需要知道所有变量的具体类型。在大部分情况下,编译器可以根据我们如何绑定、使用变…...

软考网络工程师考试大纲(2018年最新版)

本书是全国计算机专业技术资格考试办公室组织编写的网络工程师考试大纲,本书除大纲内容外,还包括了人力资源和社会保障部、工业和信息化部的有关文件以及考试简介。 网络工程师考试大纲是针对本考试的计算机网络中级资格制定的。通过本考试的考生,可被用人单位择优聘任为工…...

【数据结构】栈【详解】

目录 栈的定义: 栈的声明与定义: 头文件的包含: 对栈的基本操作: 栈的初始化: 摧毁栈: 入栈: ​编辑 出栈: ​编辑 输出栈顶位置: 输出栈的当前大小: 判空操…...

CSS 纵向底部往上动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ scale-up-ver-bottom: isAnimating }"><!-- 元素内容 --&g…...

常用的 MySQL 可视化客户端

数据库可视化客户端&#xff08;GUI&#xff09;让用户在和数据库进行交互时&#xff0c;能直观地查看、创建和修改对象&#xff0c;如&#xff1a;表、行和列。让数据库操作变得更方便了。 今天&#xff0c;我们来了解下目前市场上最常用的 MySQL 可视化客户端。 官方&#x…...

C#使用SyntaxTree获取.cs文件中的属性名和注释

有时候&#xff0c;我们可能需要获取.cs文件中的属性和对应的注释来生成一些代码&#xff0c;比如SQL查询什么的。 但使用正则匹配有时候会不准确。搜索了下&#xff0c;发现微软提供了代码解析的API。 具体如下两个方法&#xff1a; /// <summary> /// 获取所有属性和…...

基于价值认同的需求侧电能共享分布式交易策略(matlab完全复现)

目录 1 主要内容 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序完全复现《基于价值认同的需求侧电能共享分布式交易策略》&#xff0c;针对电能共享市场的交易机制进行研究&#xff0c;提出了基于价值认同的需求侧电能共享分布式交易策略&#xff0c;旨在降低电力市…...

门控循环单元(GRU)-多输入回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分程序&#xff1a; 四、全部代码数据分享&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译…...

电池管理系统BMS中SOC算法通俗解析(二)

下面简单介绍下我们BMS保护板使用的SOC估算方法。我们算法的主要是针对电流积分法计算SOC的局限性进行改进&#xff1a; ●电池包第一次上电使用开路电压法估算SOC。第一次上电&#xff0c;根据电池包厂家给出的电压和剩余容量二维关系图大概估算出目前电池包的剩余容量即SOC。…...

YOLOv5改进 | 2023主干篇 | 华为最新VanillaNet主干替换Backbone实现大幅度长点

一、本文介绍 本文给大家来的改进机制是华为最新VanillaNet网络&#xff0c;其是今年最新推出的主干网络&#xff0c;VanillaNet是一种注重极简主义和效率的神经网络架构。它的设计简单&#xff0c;层数较少&#xff0c;避免了像深度架构和自注意力这样的复杂操作(需要注意的是…...

爬虫工作量由小到大的思维转变---<第三十三章 Scrapy Redis 23年8月5日后会遇到的bug)>

前言: 收到回复评论说,按照我之前文章写的: 爬虫工作量由小到大的思维转变---&#xff1c;第三十一章 Scrapy Redis 初启动/conn说明书)&#xff1e;-CSDN博客 在启动scrapy-redis后,往redis丢入url网址的时候遇到: TypeError: ExecutionEngine.crawl() got an unexpected …...

PostgreSQL | 概念 | 什么是OLTPOLAP?

什么是OLTP&OLAP&#xff1f; 大白话理解&#xff1a;业务系统都可以称作OLTP&#xff0c;基于业务系统产生的数据进行数据分析和决策的都可以称为OLAP。 OLTP OLTP&#xff08; Online Transaction Processing&#xff09;在线事务处理系统 用途&#xff1a; 用于支持日…...

2023年成都市中等职业学校学生技能大赛“网络搭建及应用”赛项竞赛样卷

2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 &#xff08;总分1000分&#xff09; 目录 2023年成都市中等职业学校学生技能大赛 “网络搭建及应用”赛项竞赛样卷 网络建设与调试项目&#xff08;500分&#xff09; 服务器搭建与运维项目&#xff08;…...

Angular进阶之六:Progressive rendering

简介 Progressive Rendering 是一种提高 Web 应用性能的方法&#xff0c;允许页面在加载过程中逐步呈现&#xff0c;以提高用户体验。在本文中&#xff0c;我们将探讨如何在 Angular 中通过自定义指令实现 Progressive Rendering&#xff0c;特别是处理从服务器获取大量数据的…...

机器人中的数值优化之线性共轭梯度法

欢迎大家关注我的B站&#xff1a; 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 本文ppt来自深蓝学院《机器人中的数值优化》 目录 1.无约束优化方法对比 2.Hessian-vec product 3.线性共轭梯度方法的步长​编辑 4.共轭梯度…...

嵌入式Linux C语言介绍

目录 一.前言 二.C语言的特点 一.前言 开发工具通常依赖于操作系统提供的各种功能和服务。许多开发工具都基于操作系统的API&#xff08;应用程序接口&#xff09;进行开发&#xff0c;这些API提供了文件处理、网络通信、图形界面等核心功能。没有操作系统的支持&#xff0c;…...

基于Java电影院票票务系统

基于Java电影院票票务系统 功能需求 1、用户登录与注册&#xff1a;用户可以通过系统注册账号并登录系统&#xff0c;方便进行购票和管理个人信息。 2、个人信息管理&#xff1a;用户可以查看和修改个人信息&#xff0c;包括姓名、联系方式等。 3、影片信息查询&#xff1a…...

HarmonyOS应用开发实战—开箱即用的登录页面3【ArkTS】

文章目录 一.HarmonyOS应用开发实战—开箱即用的登录页面2【ArkTS】【鸿蒙专栏-31】1.1 项目背景1.2 ArkTS详解二.HarmonyOS应用开发实战—开箱即用的登录页面3【ArkTS】2.1 ArkTS页面源码2.2 代码解析2.3 心得一.HarmonyOS应用开发实战—开箱即用的登录页面2【ArkTS】【鸿蒙专…...

Unity坦克大战开发全流程——1)需求分析

实践项目&#xff1a;需求分析 该游戏共有三个主要部分&#xff1a;UI、数据储存、核心游戏逻辑&#xff0c;下面我们将从开始场景、游戏场景、结束场景三个角度切入进行分析。...

python练习2【题解///考点列出///错题改正】

一、单选题 【文件】 *1.【单选题】 ——文件&#xff1a;读取方法 下列哪个选项可以从文件中读取任意字节的内容&#xff1f;&#xff08;C &#xff09;A A.read() B.readline() C.readlines() D.以上全部 A\B\C三种方法都是可以读取文件中任意的字节内容的&#xff0…...

7.2 uvm_resource_db in UVM

uvm_resource_db是一个类型参数化 type-parameterized的类&#xff0c;它是资源数据库顶部的一个方便层(convenience layer)。这个便利层简化了对低级数据库的访问&#xff0c;并且没有添加新功能。因此&#xff0c;uvm_resource_db不是从uvm_resource类派生的。以下uvm_resour…...

洛谷——P3879 [TJOI2010] 阅读理解(STL:hash+set,c++)

文章目录 一、题目[TJOI2010] 阅读理解题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 二、题解基本思路&#xff1a;代码 一、题目 [TJOI2010] 阅读理解 题目描述 英语老师留了 N N N 篇阅读理解作业&#xff0c;但是每篇英文短文都有很多生词需要查字典&am…...

Windows/Linux环境登入mysql、mysqldump命令等多方式解决方案之简易记录

Windows/Linux环境登入mysql、mysqldump命令等多方式解决方案之简易记录 之前发布过Window方式,这次结合以上主题,完善下Linux相关登入方式过程,纯属做个记录,有需要的朋友可以做个学习参考。 一、Windows环境提示“‘mysql’ 不是内部或外部命令,也不是可运行的程序或批…...

【基础】【Python网络爬虫】【13.免费代理与付费代理】(附大量案例代码)(建议收藏)

Python网络爬虫基础 一、免费代理1. 什么是代理IP2. 代理IP的类型3. 代理IP的作用4. 免费代理的潜在风险5. 免费代理网站 二、付费代理1. 找付费代理服务站点2. 生成获取代理的api接口3. python获取代理请求接口示例数据返回示例 4. 解决请求速率5. 品易代理使用注意事项代理添…...

【 YOLOv5】目标检测 YOLOv5 开源代码项目调试与讲解实战(3)-训练yolov5模型(本地)

训练yolov5模型&#xff08;本地&#xff09; 训练文件 train.py训练如下图 一些参数的设置weights:对于weight参数&#xff0c;可以往Default参数中填入的参数有 cfg&#xff1a;&#xff08;缩写&#xff09;cfg参数可以选择的网络模型 data对于data hyp 超参数epochs 训练多…...

fastApi 项目部署

方式一&#xff0c;Uvicorn部署 Run a Server Manually - Uvicorn - FastAPI 1&#xff0c;linux服务器安装 python>3.8 2&#xff0c;安装 uvicorn : pip install "uvicorn[standard]" 3&#xff0c;上传项目到服务器 main.py from typing imp…...

python操作mysql数据库

说明&#xff1a;这里仅仅为了演示python操作MySQL数据库&#xff0c;真实环境中&#xff0c;最好把CURD分别封装为对应的方法。并将这些方法在类中封装&#xff0c;体现python面向对象的特征。python链接MySQL数据库 建表 create database mydb; use mydb; create table EMP…...

Redis6.0 Client-Side缓存是什么

前言 Redis在其6.0版本中加入了Client-side caching的支持&#xff0c;开启该功能后&#xff0c;Redis可以将指定的key-value缓存在客户端侧&#xff0c;这样当客户端发起请求时&#xff0c;如果客户端侧存在缓存&#xff0c;则无需请求Redis Server端。 Why Client-side Cac…...

Leetcode—1572.矩阵对角线元素的和【简单】

2023每日刷题&#xff08;七十三&#xff09; Leetcode—1572.矩阵对角线元素的和 实现代码 class Solution { public:int diagonalSum(vector<vector<int>>& mat) {int n mat.size();if(n 1) {return mat[0][0];}int sum 0;int i 0, j n - 1;while(i &…...

基于SpringBoot的二手手机商城系统的设计与实现

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的二手手机商城系统的设计…...

OpenFeign相关面试题及答案

1、什么是OpenFeign&#xff0c;它如何简化远程服务调用&#xff1f; OpenFeign是一个声明式的Web服务客户端&#xff0c;它使得编写HTTP客户端变得更加容易。它属于Spring Cloud Netflix项目的一部分&#xff0c;可以与Spring Boot应用轻松集成。通过使用OpenFeign&#xff0…...

c盘扩容时,d盘无法删除卷问题

C盘扩容时&#xff0c;磁盘管理中D盘右键无法删除卷的原因 首先&#xff0c;D盘下文件夹为空&#xff0c;但是显示可用空间不是100%&#xff0c;经过排查&#xff0c;发现是虚拟内存设置在了D盘导致无法删除卷&#xff0c;这里只需要将虚拟内存放到其他盘&#xff0c;如E盘即可…...

NumPy 中级教程——广播(Broadcasting)

Python NumPy 中级教程&#xff1a;广播&#xff08;Broadcasting&#xff09; 在 NumPy 中&#xff0c;广播是一种强大的机制&#xff0c;它允许不同形状的数组在进行操作时&#xff0c;自动进行形状的调整&#xff0c;使得它们能够完成一致的运算。广播使得对数组的操作更加…...

python-39-flask+nginx+Gunicorn的组合应用

flask nginx Gunicorn 王炸 1 flasknginxgunicornsupervisor 1.1 myapp.py from flask import Flask app Flask(__name__)app.route("/") def test_link():return "the link is very good"if __name__"__main__":app.run()默认是5000端口…...

C#-CSC编译环境搭建

一.Microsoft .NET Framework 确保系统中安装Microsoft .NET Framework相关版本下载 .NET Framework 4.7 | 免费官方下载 (microsoft.com)https://dotnet.microsoft.com/zh-cn/download/dotnet-framework/net47 二.编译环境搭建 已经集成编译工具csc.exe,归档至gitcode,实现us…...

【JVM】一文掌握JVM垃圾回收机制

作为Java程序员,除了业务逻辑以外,随着更深入的了解,都无法避免的会接触到JVM以及垃圾回收相关知识。JVM调优是一个听起来很可怕,实际上很简单的事。 感到可怕,是因为垃圾回收相关机制都在JVM的C++层实现,我们在Java开发中看不见摸不着;而实际很简单,是因为它说到底,也…...

【AIGC风格prompt】风格类绘画风格的提示词技巧

风格类绘画风格的提示词展示 主题&#xff1a;首先需要确定绘画的主题&#xff0c;例如动物、自然景观、人物等。 描述&#xff1a;根据主题提供详细的描述&#xff0c;包括颜色、情感、场景等。 绘画细节&#xff1a;描述绘画中的细节&#xff0c;例如表情、纹理、光影等。 场…...

vue exceljs json数据转excel

json数据转excel 有时候我们会遇到这样一个需求&#xff0c;就是将数据转成excel下载&#xff0c;这一般都是由后端来处理&#xff0c;使用插件poi轻松搞定。如果只有少量数据&#xff0c;那么能不能避免调用后端接口&#xff0c;前端直接处理呢&#xff1f; 答案是&#xff…...

Navicat for MySQL 创建函数——报错1418

解决方法 1查看是否开启了创建函数的功能 输入下面语句查看是否开启了创建函数的功能 show variables like %func%; 下面为创建函数功能为开启的查询结果 如果不是上面的结果可以用下面的语句修改为开启 set GLOBAL log_bin_trust_function_creatorstrue; //或 set GLOBAL …...

java球队信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web球队信息管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5…...

设计模式(4)--对象行为(7)--观察者

1. 意图 定义对象间的一种一对多的依赖关系&#xff0c; 当一个对象的状态改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。 2. 四种角色 抽象目标(Subject)、具体目标(Concrete Subject)、抽象观察者(Observer)、 具体观察者(Concrete Observer) 3. 优点 3.1 …...

MySQL所有常见问题

一、事务 定义:一组操作要么全部成功,要么全部失败,目的是为了保证数据最终的一致性 在MySQL中,提供了一系列事务相关的命令: start transaction | begin | begin work:开启一个事务commit:提交一个事务rollback:回滚一个事务事务的ACID 原子性(Atomicity):当前事…...

锐捷交换机配置 SNMP

配置步骤 ( SNMP v2 ) 步骤一 -- 创建共同体(Community) ruijie(config)#snmp-server community test rw # rw 为读和写口令ruijie(config)#snmp-server community public ro # ro 为只读和写口令这里的共同体为“test”,通常只读口令和读写口令单独配置,提升安…...

Windows 10 安装和开启VNCServer 服务

Windows 10 安装和开启VNCServer 服务 登录云服务器 使用本地RDP登录到配置VNCServer服务的Windows10系统的云服务器。 下载VNC Server安装包 打开官网下载VNCServer安装包 URL&#xff1a;https://www.realvnc.com/en/connect/download/vnc/windows/ 安装VNC Server 双击…...

js遍历后端返回的集合将条件相同的放入同一个数组内

项目场景&#xff1a; echarts折线图需要根据条件动态展示多条不同曲线 解决方案&#xff1a; 后端直接将使用sql将数据查询出来返回即可,因为我这里不是Java使用的C#不是很熟练后台不好写逻辑,所以在前端js完成的 代码如下: function createline(villagename, buildingname…...

GcExcel:DsExcel 7.0 for Java Crack

GcExcel:DsExcel 7.0-高速 Java Excel 电子表格 API 库 Document Solutions for Excel&#xff08;DsExcel&#xff0c;以前称为 GcExcel&#xff09;Java 版允许您在 Java 应用程序中以编程方式创建、编辑、导入和导出 Excel 电子表格。几乎可以部署在任何地方。 创建、加载、…...

基于SpringBoot的职业生涯规划系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的职业生涯规划系统,java…...

基于Java+SpringBoot+vue+elementui的校园文具商城系统详细设计和实现

基于JavaSpringBootvueelementui的校园文具商城系统详细设计和实现 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录 基于JavaSpringBootvueelementui的校园文具商城系统详细设计和实现前言介绍&#xff1a;系统设计&#xff1a;系统开发流程用户登录流程系统操作流程 功能…...

PyTorch中常用的工具(5)使用GPU加速:CUDA

文章目录 前言4 使用GPU加速&#xff1a;CUDA5 小结 前言 在训练神经网络的过程中需要用到很多的工具&#xff0c;最重要的是数据处理、可视化和GPU加速。本章主要介绍PyTorch在这些方面常用的工具模块&#xff0c;合理使用这些工具可以极大地提高编程效率。 由于内容较多&am…...