Python matplotlib画图的技巧

1、解决plt出来的图长宽不一致的现象

import matplotlib.pyplot as plt
from pylab import * 
from matplotlib.ticker import MultipleLocator, FuncFormatter
z_show = np.zeros([17,101])
plt.imshow(z_show, origin='lower', interpolation='none')

Python matplotlib画图的技巧_第1张图片
plt.imshow是将z图像显示在坐标轴上,但是z_show明显长款不一致,怎样使得出来的图像长宽一致呢?在imshow的参数里面加上aspect=’auto’就可以了,效果如下

plt.imshow(z_show, origin='lower', interpolation='none',aspect='auto')

Python matplotlib画图的技巧_第2张图片
此时还可以通过一下图片的按钮进行伸缩,而之前不加aspect=’auto’就做不到,不加aspect=’auto’这些按钮操作只会上下左右平移画出来的图像,但是不会进行长度上的变化。
Python matplotlib画图的技巧_第3张图片

2、

z = np.random.random(size=(17, 101))
print(np.shape(z))
ax=plt.gca()
ax.set_yticks([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])
ax.set_yticklabels([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])
ax.set_xticks([0,10,20,30,40,50,60,70,80,90,100])
ax.set_xticklabels([0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0])
plt.imshow(z, origin='lower', interpolation='none',aspect='auto')
plt.show()

set_yticks是在y方向上面设置间隔显示,这里的数字一定要和矩阵z_show的尺寸相对应,比如
ax.set_yticks([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])
这时候的效果和ax.set_yticks([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])是一样的,表示你按照什么样的间隔去分,但是ax.set_yticklabels则是给每一个间隔处设置一个标签用来随心所欲的表示自己想表示的内容。比如下面将间隔标志设置为一系列的小数,而实际上x方向是按照0,10,…,100进行划分的。
Python matplotlib画图的技巧_第4张图片

3、
如果统计信息之间差别很大画在图上不好看就转换到log空间,对于log(0)=-inf,plt.imshow()直接以空白来显示。
4、加上其他额外的信息,例如label,caption等

plt.title('statistic ')
plt.xlabel('a')
plt.ylabel('b')

题外、storage是c类型的一种数组表示,而lua中进行数组表示则可以通过table。

5、plt画图的时候,如果图像矩阵在[0,1]之间,此时像素值为小数即可。如果像素值介于[0,255]之间,则必须是整数,否则会出错
scipy.misc.imresize会将图像进行尺度上的缩放,但是同时也会将0~1之间的图像映射到0~255之间,使用这个函数的时候一定要小心,注意缩放后的参数

6、
保存图片

plt.savefig('/home/lzhou/pytorch-file/NewWork/1mul-vis/data/result/%d_%d.png' %(i,i))

你可能感兴趣的:(Python matplotlib画图的技巧)