深度学习可视化

matplotlib的使用

 

import matplotlib.pyplot as plt

连续图像常用函数及其作用

1.plt.plot()

plt.plot(
	x,
	y,
	format_string,
	**kwargs) 

其中**kwargs包含常用的参数:

color #颜色 
linestyle #线条样式 
linewidth #线宽
marker #标记风格 
markerfacecolor #标记颜色 
markersize #标记大小等等 

1、’.’:点标记
2、’,’:像素标记
3、‘o’:实心圆标记
4、‘v’:倒三角标记
5、’^’:上三角标记
6、’>’:右三角标记
7、’<’:左三角标记
8、’*’:星形标记
9、‘x’:x形标记
10、‘s’:实心方形标记
11、‘p’:实心五角标记

颜色主要有:‘b’, ‘g’, ‘r’, ‘c’, ‘m’, ‘y’, ‘k’, ‘w’

2.plt.figure()

plt.figure(
	num=None,
	figsize=None, 
	dpi=None, 
	facecolor=None, 
	edgecolor=None, 
	frameon=True)

各个参数含义:

num 		#图像的编号或者名称,当其为数字时是编号,当其为字符串时是名称 
figsize		#指定figure的宽和高 
dpi			#参数指定绘图对象的分辨率
facecolor	#背景颜色
edgecolor	#边框颜色 
frameon		#是否显示边框

3.刻度线的相关设置

import numpy as np
import matplotlib.pyplot as plt
 
 
def tickline():
plt.xlim(0, 10), plt.ylim(-1, 1), plt.yticks([])
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['left'].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('none')
ax.xaxis.set_minor_locator(plt.MultipleLocator(0.1))
ax.plot(np.arange(11), np.zeros(11))
return ax
 
locators = [
'plt.NullLocator()',
'plt.MultipleLocator(1.0)',
'plt.FixedLocator([0, 2, 8, 9, 10])',
'plt.IndexLocator(3, 1)',
'plt.LinearLocator(5)',
'plt.LogLocator(2, [1.0])',
'plt.AutoLocator()',
]
 
n_locators = len(locators)
 
size = 512, 40 * n_locators
dpi = 72.0
figsize = size[0] / float(dpi), size[1] / float(dpi)
fig = plt.figure(figsize=figsize, dpi=dpi)
fig.patch.set_alpha(0)
 
 
for i, locator in enumerate(locators):
plt.subplot(n_locators, 1, i + 1)
ax = tickline()
ax.xaxis.set_major_locator(eval(locator))
plt.text(5, 0.3, locator[3:], ha='center')
 
plt.subplots_adjust(bottom=.01, top=.99, left=.01, right=.99)
plt.show()

 4.fig.add_axes()图中图

ax1 = fig.add_axes([left,bottom,width,height])
###
其中left,bottom,width,height均代表百分比,代表其占整个图像的百分比。
left为坐标轴最左侧举例边缘的百分比;
bottom为坐标轴最下侧举例边缘的百分比;
width代表左右坐标轴的距离;
height代表上下坐标轴的距离;
###
ax2.plot(x,y,'r')
ax2.set_title("ax2")

5.3D绘图

首先使用Axes3D()创建一个3D图像。

fig = plt.figure(num = 1)
# 创建一幅3d图像
ax = Axes3D(fig)
# fig就是利用plt.figure(num = 1)创建出来的图像

使用ax.plot_surface()绘制3D图像。

# 进行画图
ax.plot_surface(X,Y,Z,rstride = 1,cstride = 1,cmap = plt.cm.rainbow)
###
X,Y,Z分别代表网格化后的x,y,z坐标;rstride代表行(row)的宽度;cstride代表列(column)的宽度;cmap代表填充的色调,这里选择rainbow色调
###

使用ax.contourf()绘制等高线。

# 将图画通过z轴映射到底,形成等高图的填充部分。
ax.contourf(X,Y,Z,zdir = 'z',offset = -2,cmap = plt.cm.rainbow)

 6.等高线绘图

使用plt.contourf()定义各个等高线之间的填充。

# 调用等高线的填充物
plt.contourf(X,Y,f_x_y,8,alpha = 0.5,cmap = plt.cm.hot)
###
X,Y分别代表网格化后的x,y坐标;f_x_y对于等高线而言,其代表了高度;8代表等高线要分为10块(输入0时等高线分为2块);alpha代表每个填充物的透明度;cmap代表填充的色调,这里选择hot热烈的色调
###

使用plt.contour()定义等高线的线。linewidth代表线的宽度。

# 定义等高线的线的颜色,宽度
C = plt.contour(X,Y,f_x_y,8,colors='black',linewidth = 5)

使用plt.clabel()定义等高线的标签。

# clabel用于定义等高线的标签
plt.clabel(C,inline = True,fontsize = 10)

7.柱状图绘制

plt.bar(
	x, 
	height, 
	width=0.8, 
	bottom=None, 
	*, 
	align='center',
	data=None, 
	**kwargs)
###
x:每个柱子的x坐标。
height:每个柱子的高度。
width:每个柱子的宽度。
align:每个柱子相对于其对应的x的位置。常见的是center,位于对应的x的中间。
color:用于设置柱子的颜色。
edgecolor:用于设置柱子边缘的颜色。
alpha:用于设置透明度。
###

8.散点图绘制

plt.scatter( 
	x, 
	y, 
	s=None, 
	c=None, 
	marker=None, 
	cmap=None, 
	norm=None,
	param cmap=None,
	vmin=None, 
	vmax=None, 
	alpha=None, 
	linewidths=None, 
	verts=None,
	edgecolors=None, 
	*, plotnonfinite=False, 
	data=None, **kwargs)
###
x,y:代表着即将绘制的散点图的坐标,可以是1个数或者n维数组,但是shape要一样。
s:是一个实数或者是一个数组,这个是一个可选的参数。
c:表示的是颜色,默认为蓝色,可以是一个数或者一个n维数组。
marker:表示的是标记的样式,默认的是’o’。
###

示例:

import matplotlib.pyplot as plt
import numpy as np

random_x = np.random.uniform(0,1,1000)
random_y = np.random.uniform(0,1,1000)
color = np.tanh(random_x-random_y)

print(color)
plt.scatter(random_x,random_y,s = 30,c = color,alpha = 0.5)
plt.show()

 8.添加图例

添加图例使用函数plt.legend(),主要参数有

1、可取:‘best’、 ‘upper right’、‘upper left’、‘lower left’、‘lower right’、‘right’、‘center left’、‘center’、'right’、‘lower center’、‘upper center’、‘center’) ,表示不同的显示位置。
2、borderpad:图例的内边距 ,None或者float。
3、fontsize:int或float或{‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’},用于设置字体大小。
4、frameon: 是否显示图例边框,None或者bool。
5、fancybox:是否将图例框的边角设为圆形,None或者bool。
6、framealpha:控制图例框的透明度,None或者float。
7、ncol:图例列的数量,默认为1。
8、title:图例的标题
9、shadow: 是否为图例边框添加阴影,None或者bool。
10、markerfirst:bool量,True表示图例标签在句柄右侧,false反之。
11、markerscale: 图例标记为原图的多少倍。
12、labelspacing:图例中条目之间的距离,None或者float。
13、handlelength:图例中句柄的长度。
14、handles:填写用于添加到图例里的线条。
15、labels:对应着添加到图例里线条的标签。
 

示例:

plt.legend(loc = 'best', handles = [line1,line2,],labels = ['curve one','straight one'],
    shadow = True,
    fancybox = True,
    markerfirst = True,
    borderpad = 1.5,
    framealpha = 1,
    title = 'legend',
    labelspacing = 1.2)
plt.show() 

 9.坐标轴设置

使用函数plt.xlim()和plt.ylim()进行坐标轴的设置,规定其上下限。

plt.xlim((left, right))
plt.ylim((bottom, top))

使用函数plt.xlabel()和plt.ylabel()设置坐标轴的标签。

plt.xlabel('X轴')
plt.ylabel('Y轴')

进一步编辑更加个性化的坐标。

# 将X轴从-1到1分成十份
newTicks = np.linspace(-1,1,10)
plt.xticks(newTicks)

# 将Y轴按照这个对应关系进行显示
plt.yticks([-2,-1.0,0,1.5,3], 
           ['really bad','little bad','normal','little good','pretty good'])

 axis操作指令可以使得坐标轴的位置、样式发生改变。

# 可以用于获取当前的axis。
ax = plt.gca()

# 用于设置坐标轴边的颜色与情况
# 此时设置图像的上边、右边axis为无色
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# 设置x轴坐标在下部
ax.xaxis.set_ticks_position('bottom')
# 设置x轴位于图像y=0处
ax.spines['bottom'].set_position(('data', 0))

# 设置y轴坐标在左部
ax.yaxis.set_ticks_position('left')
# 设置y轴位于图像x=0处
ax.spines['left'].set_position(('data',0))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值