matplotlib中知识点01

本文记录一下在实现 DDRQM 过程中的一些 matplotlib 包和 python 相关知识点。

1.matplotlib.pyplot.histplt.hist:用于绘制直方图。


2.matplotlib.pyplot.showplt.show:用于展示所有打开的图片。完整调用形式如下:

1
matplotlib.pyplot.show(*, block=None)
  • block:布尔类型,可选。表示在返回之前是否等待所有figures关闭。默认为True,通常在非交互模式使用;交互模式通常设为False。

参考资料:

  1. matplotlib.pyplot.show

3.matplotlib.pyplot.imshowplt.imshow:用于将数据作为图像展示,例如以222*2的形式展示4张图片。输入要么是RGB(A)RGB(A)数据,要么是二维的标量数据,后者将被渲染成一张具有伪颜色的图像。显示灰度图时可以设置参数cmap='gray'。完整调用形式为:

1
matplotlib.pyplot.imshow(X, cmap=None, norm=None, *, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, interpolation_stage=None, filternorm=True, filterrad=4.0, resample=None, url=None, data=None, **kwargs)
  • X:数组形式或者PIL图像。支持的数组类型有:

    • (M, N),具有标量数据的图像
    • (M, N, 3),具有RGBRGB值的图像
    • (M, N, 4),具有RGBARGBA值的图像,包括透明度
  • cmap:用于将标量数据映射为colors,对RGB(A)RGB(A)数据该参数无效

参考资料:

  1. matplotlib.pyplot.imshow

4.当使用matplotlib画有很多subplots的图时,改善subplots布局:

参考资料:

  1. Improve subplot size/spacing with many subplots in matplotlib

5.使用matplot画散点图,利用scipy计算相关系数并利用sklearn计算回归:
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
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
import numpy as np
from scipy.stats import pearsonr

def point_plot(model, dataset, size=0.1):
score_avgf_file = model + '_' + dataset + '.txt'
score_avgf_pair = open('./txt/' + score_avgf_file).read().splitlines()
score = []
avgf = []
for pair in score_avgf_pair:
score.append(float(pair.split(' ')[0]))
avgf.append(float(pair.split(' ')[1]))

scores = np.array(score)
avgfs = np.array(avgf)

# plt.plot(scores, avgfs, 'o')
# corrco = np.corrcoef(scores, avgfs)
corrco = pearsonr(scores, avgfs)
plt.scatter(scores, avgfs, s=size)
plt.xlabel('image complexity')
plt.ylabel('avg F')
title = model + ' on ' + dataset + ', correlation coefficient=' + str(corrco[0])
plt.title(title)
save_fig = model + '_' + dataset + '.png'

reg = LinearRegression().fit(scores.reshape(-1,1), avgfs)
pred = reg.predict(scores.reshape(-1,1))
plt.plot(scores, pred,linewidth=2, color='red', label='回归线')

plt.savefig('./fig/' + save_fig)
plt.show()
> 参考资料: > 1. [从零开始学Python【15】--matplotlib(散点图) - 天善智能:专注于商业智能BI和数据分析、大数据领域的垂直社区平台](https://ask.hellobi.com/blog/lsxxx2011/10243) > 2. [如何在 Matplotlib 中设置散点图的标记大小](https://www.delftstack.com/zh/howto/matplotlib/how-to-set-marker-size-of-scatter-plot-in-matplotlib/) > 3. [Matplotlib 散点图 | 菜鸟教程](https://www.runoob.com/matplotlib/matplotlib-scatter.html) > 4. [Python三种方法计算皮尔逊相关系数](https://blog.csdn.net/qq_40260867/article/details/90667462)
5.由于OpenCV读取的图片默认三通道顺序为BGR,所以在使用matplotlib进行画图时,需要对其通道顺序进行调整:
1
2
3
4
5
from matplotlib import pyplot as plt
plt.subplot(1,1,1)
plt.imshow(result[:, :, [2, 1, 0]])
plt.title("result")
plt.show()