在深度学习中,常用的图大概有一下几种:
一般都是自带的,比如conda 软件,若没有,桌面安装呢?如果已经安装了,可以略过。
1.打开控制台(win+R)->输入cmd
2.输入下面命令
pip install matplotlib
或者
conda install matplotlib
完成即可。
import matplotlib.pyplot as plt
# 显示中文
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False
下面分别介绍下他们基本使用方法。
通过绘制cos函数的曲线图
import matplotlib.pyplot as plt
import numpy as np
def f(t):
return np.exp(-t) * np.cos(2 * np.pi * t)
t1 = np.arange(0.0, 3.0, 0.01)
plt.plot(t1,f(t1))
plt.show()
属性 | 用途 |
---|---|
xlabel | 设置x为x |
ylabel | 设置y为y |
ylim(m,n) | 设置y为在m-n之间 |
xlim(m,n) | 设置x为范围在m-n之间 |
title | 设置图标的标题 |
具体代码如下:
import matplotlib.pyplot as plt
import numpy as np
def f(t):
return np.exp(-t) * np.cos(2 * np.pi * t)
t1 = np.arange(0.0, 3.0, 0.01)
plt.plot(t1, f(t1))
plt.xlabel("x") #设置x为x
plt.ylabel("y") #设置y为y
plt.ylim(0, 0.6) #设置y为在0-0.6之间
plt.xlim((0, 2)) #设置x为范围在0-2之间
plt.show()
属性 | 用途 | 系统默认值 |
---|---|---|
label | 为线条设置标签 | 无 |
color | 设置线条的颜色 | g代表green,b代表blue,等等 |
import matplotlib.pyplot as plt
import numpy as np
def f(t):
return np.exp(-t) * np.cos(2 * np.pi * t)
t1 = np.arange(0.0, 3.0, 0.01)
plt.plot(t1, f(t1), label="cos", color="g")
plt.plot(t1, t1 ** 2, label="quadratic", color="b")
plt.show()
当你在绘制多个图时,需要对不同的颜色的图进行标注和说明,则可以用图例展示。
为每个曲线设置label和颜色,在设置legend()函数即可。
在实际的项目中,你可能要化多种类型的图作对比,能不能在一个画布上画多个图呢?可以subplot来解决。
subplot 最常用的有两种种方法,我们先将不怎么容易理解的方法。(从我的角度)。
这pos由行,列,索引组成,什么意思呢?
索引对应的位置,从左往右,从上往下,以2行,2列为例,简单说明下index:
列1 | 列2 | |
---|---|---|
行1 | 1 | 2 |
行2 | 3 | 4 |
subplot(221)表示这个图有4(2*2)个子图表,放在第一个。具体的代码如下:
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
data = np.random.randn(2, 100)
axs1 = plt.subplot(221) #第一个
axs1.hist(data[0])
axs2 = plt.subplot(222) #第二个
axs2.scatter(data[0], data[1]);
axs3 = plt.subplot(223) #第三个
axs3.plot(data[0], data[1]);
axs4 = plt.subplot(224) #第四个
axs4.hist2d(data[0], data[1]);
plt.show()
如果只有三张图,在最下面铺开,桌面处理呢,其实就是你可以这么想,将画布分为上半部分和下半部分,上半部分显示两个,下半部分显示一个。
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
data = np.random.randn(2, 100)
axs1 = plt.subplot(221) #两行两列,放在第一个。
axs1.hist(data[0])
axs2 = plt.subplot(222) #两行两列,放在第二个。
axs2.scatter(data[0], data[1]);
axs3 = plt.subplot(212)
axs3.plot(data[0], data[1]); #两行一列,放在第二行
plt.show()
这种方法其实更容易立即,更加直观。nrows代表行,ncols代表列,index代表放在哪个位置上和上面的subplot(position)本质上是一样的。
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
data = np.random.randn(2, 100)
axs1 = plt.subplot(2, 2, 1)
axs1.hist(data[0])
axs2 = plt.subplot(2, 2, 2)
axs2.scatter(data[0], data[1], color="b");
axs3 = plt.subplot(2,2,3)
axs3.plot(data[0], data[1]);
axs4 = plt.subplot(2,2,4)
axs4.hist2d(data[0], data[1]);
plt.show()
效果也是一样的
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
data = np.random.randn(2, 100)
axs1 = plt.subplot(2,2,1) #两行两列,放在第一个。
axs1.hist(data[0])
axs2 = plt.subplot(2,2,2) #两行两列,放在第二个。
axs2.scatter(data[0], data[1]);
axs3 = plt.subplot(2,1,2)
axs3.plot(data[0], data[1]); #两行一列,放在第二行
plt.show()
通过annotate实现注释的,主要由三个参数:
字段 | 意义 |
---|---|
s | 注释的内容 |
xy | 箭头的位置 |
xytext | 注释内容位置 |
arrowprops | 箭头的样式 |
具体代码实现如下:
x = np.arange(-10, 11, 1)
y = x * x
plt.title('title')
plt.plot(x, y)
# 添加注释
plt.annotate('this is annotate', xy=(0, 1), xytext=(-2, 22), arrowprops={'headwidth': 10, 'facecolor': 'r'})
plt.show()
代码如下:
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
data = np.random.randn(2, 100)
plt.scatter(data[0], data[1],c="b",marker='o')
plt.show()
scatter中包括哪些参数呢?
参数 | 名称 | 使用方法 |
---|---|---|
x | 点的x位置 | 可以是固定值,也可以是list |
y | 点的y位置 | 可以是固定值,也可以是list |
s | 设置点的大小 | 是固定大小 |
c | 颜色 | 可以是rgb值(#782728),也颜色字符(b) |
marker | 点的形状 | 见下面的表格 |
alpha | 透明度 | 0-1之间 |
linewidths | 设置边框的宽度 | 大于0的值 |
其中marker有哪些呢,可以在matplotlib.markers.MarkerStyle.markers找到,具体有哪些呢,我列举出来了,见下面表格:
marker值 | 形状 |
---|---|
‘o’ | 原点 |
‘v’ | 下三角 |
‘^’ | 上三角 |
‘<’ | 左三角 |
‘>’ | 右三角 |
‘8’ | 八边形 |
‘s’ | 正方形 |
‘p’ | 五边形 |
‘*’ | 星形 |
‘h’ | 六边形1 |
‘H’ | 六边形2 |
‘D’ | 菱形 |
‘d’ | 单菱形 |
‘P’ | 填充的加号 |
‘X’ | 填充的乘号 |
具体示例:
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
data = np.random.randn(2, 100)
plt.scatter(data[0], data[1], s=data[1] * 20, c='b', marker='o', alpha=0.3, linewidths=2)
plt.show()
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
data = np.random.randn(2, 100)
plt.scatter(data[0], data[1], s=data[1] * 20, c='r', marker='^', alpha=0.9, linewidths=1)
plt.show()
import matplotlib.pyplot as plt
image_content = plt.imread('myworkspace/pandasDemo/Figure_subplot.png') #读取图片信息
plt.imshow(image_content) #显示图片
plt.show()