matplotlib绘图的核心原理讲解
使用Python绘图库matplotlib绘图时,标签文字超出画面或重合怎么办?
使用Python绘图库matplotlib绘图时,标签文字超出画面或重合怎么办?
感谢您的邀请,这个问题可以通过tight_layout命令解决。
tight_layout
tight_layout命令可以说是一个并不完善的命令,因为在好多情况下这个命令并没有什么效果甚至起到反作用,但是在一些情况下这个命令又可以使我们事半功倍,所以这个命令的使用效果需要我们去试验。
说了这么多这个命令到底是干什么的呢?
tight_layout命令主要用于自动调整绘图区的大小及间距,使所有的绘图区及其标题、坐标轴标签等都可以不重叠的完整显示在画布上。下面我们通过几段实例代码来进行讲解。
一、单绘图区
这段代码只有一个绘图区,但是绘图区的X轴标签、Y轴标签、以及标题字体都设置的非常大,导致这些文字并不能完整的显示出来。为了解决这个问题,传统的方法是通过_adjust(left,right,top,bottom,wspace,hspace)方法进行设置,给文字留出足够的空间。但是tight_layout命令免去了我们计算预留空间的麻烦,直接就可以将所有要素平铺在画布上完整显示出来。
二、多绘图区规则布局
当我们创建了多个绘图区的时候,我们经常会遇到绘图区之间有部分重叠的问题。
tight_layout命令同样适用于此种问题的解决,它可以自动调整绘图区之间的间隔将重叠部分减少到最小。
fig1.tight_layout()
此外,tight_layout命令还有三个关键字参数:pad、w_pad、h_pad。
pad用于设置绘图区边缘与画布边缘的距离大小
w_pad用于设置绘图区间水平距离的大小
h_pad用于设置绘图区间垂直距离的大小
使用方法及效果如下:
fig2.tight_layout(pad0.4, w_pad0.5, h_pad1.0)
三、多绘图区不规则布局
当我们的绘图区大小不等时,tight_layout命令同样适用。
下面两张图是两个2×2网格下的绘图区以及一个1×2网格下的绘图区,在使用tight_layout命令前后的区别。
四、其他情况
当我们使用网格空间布局法,即使用subplot2grid()方法或者GridSpec()方法创建布局的时候,tight_layout命令在理论上也是适用的,但是经常会有莫名其妙的情况发生,导致显示效果不尽人意,所以这里只讲用法不进行演示了。
使用subplot2grid()方法创建的布局,依旧是通过plt.tight_layout()或者fig.tight_layout()的命令使用
使用GridSpec()方法创建的布局,需要通过GridSpec对象的tight_layout()方法使用,并传递画布参数,如:gs.tight_layout(fig)
GridSpec对象的tight_layout()方法还有一个可选参数rect,是一个区域的坐标范围,默认值为[0, 0, 1, 1],代表在该区域内自动调整绘图区大小。
matplotlib可视化的特点与优点?
Python这几年成为了做数据分析的主流工具,其中的各个库,也基本能够满足从数据获取到数据分析处理、数据可视化的全流程环节。
而数据可视化环节,也有不少的公司依然在用传统BI工具。以Python pandas来做数据可视化的话,主要得益于Pandas数据帧plot()函数的应用,使得可视化图形创建非常便捷。
在数据帧上进行操作的plot()函数只是matplotlib中()函数的一个简单包装 ,可以帮助你在绘图过程中省去那些长长的matplotlib代码。
而传统的BI工具,在可视化上还是比较遵循旧例,报表风格和呈现形式固定,很多操作固定,相对来说的话,没有Python来做选择更加个性化。