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')

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

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

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

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进行划分的。
这里写图片描述

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

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

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

猜你喜欢

转载自blog.csdn.net/u013548568/article/details/79896574