代码教程与注意事项

代码教程与注意事项


Markdown 相关

Markdown 中的公式编辑教程:https://www.jianshu.com/p/25f0139637b7

Python相关

Matplotlib

默认颜色和对应名称:

pic1

常用标记点形状:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
'.':点(point marker)
',':像素点(pixel marker)
'o':圆形(circle marker)
'v':朝下三角形(triangle_down marker)
'^':朝上三角形(triangle_up marker)
'<':朝左三角形(triangle_left marker)
'>':朝右三角形(triangle_right marker)
'1':朝下三叉(tri_down marker)
'2':朝下三叉(tri_up marker)
'3':朝下三叉(tri_left marker)
'4':朝下三叉(tri_right marker)
's':正方形(square marker)
'p':五边形(pentagon marker)
'*':五角星(star marker)
'h':竖直六边形(hexagon1 marker)
'H':水平六边形(hexagon2 marker)
'+':加号(plus marker)
'x':乘号(x marker)
'D':菱形(diamond marker)
'd':小型菱形(thin_diamond marker)
'|':垂直线(vline marker)
'_':水平线(hline marker)

常用线形:

1
2
3
4
'-': 实线(solid line style)
'--': 虚线(dashed line style)
'-.': 点划线(dash-dot line style)
':': 点线(dotted line style)

绘制变量相关性图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
from scipy import stats

# 计算变量的相关性和p值,展示散点图、直方图和相关系数热力图
df_corr = pd.read_csv('data.csv')
cmap = plt.get_cmap('RdBu')
new_colors = cmap(np.linspace(0, 1, 2000))

# 添加相关系数和背景颜色
def draw_corr(x_var, y_var, **kwargs):
coef, p_val = stats.pearsonr(x_var, y_var)[0], stats.pearsonr(x_var, y_var)[1] # 计算相关系数和p值
p_str = '***' if p_val < 0.001 else '**' if p_val < 0.01 else '*' if p_val < 0.05 else ''
label = '{0:.3f}'.format(coef) + '\n' + p_str # 添加标签
color = tuple(new_colors[int((round(coef, 3) + 1) * 1000)]) # 计算并添加颜色
ax = plt.gca()
ax.annotate(label, xy=(0.3, 0.3), size=24, xycoords=ax.transAxes)
ax.patch.set_facecolor(color) # 设置 ax 区域背景颜色
ax.patch.set_alpha(0.7) # 设置 ax 区域颜色透明度

pg = sns.PairGrid(data=df_corr, height=2)
pg.map_lower(sns.regplot, color='k', ci=95, scatter_kws={'s': 20, 'lw': 0.3, 'alpha': 0.6},
line_kws={'lw': 2, "color": 'firebrick'}) # scatter, regplot, histplot, kdeplot
pg.map_diag(sns.histplot, bins=10, edgecolor='w', kde=True, line_kws={'lw': 2})
pg.map_upper(draw_corr)
pg.tight_layout()

# 设置子图的标签字体大小
PairGrid_axes = pg.axes
for axes in PairGrid_axes.flatten():
axes.tick_params(axis='both', labelsize=16)
axes.ticklabel_format(style='sci', scilimits=(-1, 2), axis='both')
axes.xaxis.label.set_fontsize(20)
axes.yaxis.label.set_fontsize(20)
plt.show()

Opencv-python

由于 imwrite 使用编码在 python3 中已经不适用,可用 imencode 代替

1
2
3
4
5
6
7
8
9
# img_path为读取图片路径,save_path为保存图片路径

# 读取图片:若路径有中文则imread方法不成功,imdecode可以读取包含中文的路径
im = cv2.imread(img_path, 1)
img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), 1)

# 保存图片:若路径有中文则该imread方法不成功,imdecode可以保存包含中文的路径,'.jpg'为保存文件格式
cv2.imwrite(save_path, img)
cv2.imencode('.jpg', img)[1].tofile(save_path)