内容简介:转自:迷途小书童测试环境:
作者:令狐虫
转自:迷途小书童
测试环境: python版本 3.7.0 / 操作系统window 7 64位 / 编辑器PyCharm;
1 关于安装
问1:Python画图用到哪些库?
答:Python常用的绘图库有:
matplotlib,是最经典的 Python 可视化绘图库。matplotlib就是MATLAB+Plot+Library,即模仿Matlab的绘图库,其绘图风格与Matlab类似。
seaborn,是基于matplotlib的,纯粹由Python开发的图形可视化库,在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易。 "make a well-defined set of hard things easy" ,“默认情况下就能创建赏心悦目的图表”。
basemap,Python的basemap库负责实现地理信息可视化,其功能之强大较GMT有过之而无不及。其底图数据库与GMT相同,封装了大量常用的地图投影、坐标转换功能,利用简洁的Python语法支持绘出多种多样的地理地图。
笔者常用matplotlib和basemap库,下一步打算学习和使用seaborn库。
问2:Python绘图库大不大?这些库能在哪里找?安装是否麻烦?
答:以上绘图库安装包大小在100M以内。安装及卸载十分简单。大部分库支持在线安装。
控制台使用pip install matplotlib命令即可安装matplotlib库。安装之前需要先安装numpy,dateutil模块,安装命令分别为pip install numpy / pip install python-dateutil。此外,安装Pillow库,可以支持导出更多的如JPEG、BMP、TIFF等更多图片格式。
seaborn的安装同matplotlib,pip install seaborn。其依赖库包括numpy,scipy,matplotlib,pandas。
basemap的安装略微不同。(Windows用户)需要到https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载对应的wheel文件到本地,然后控制台进入其所在目录,使用pip install xxxx.whl安装。其依赖于pyproj库。具体安装过程参考 https://zhuanlan.zhihu.com/p/34509847
2 与其他 工具 对比
问3.1:任何Matlab能画的图Python都能画吗?
问3.2:从Matlab画图转向Python画图是否容易?
答:由于 matplotlib 使用的大部分函数都与 Matlab 中对应的函数同名,且各种参数的含义,使用方法也一致,这就使得熟悉 Matlab 的用户使用起来感到得心应手。对那些不熟悉的 Matlab 的用户而言,这些函数的意义往往也是一目了然的,因此只要花很少的时间就可以掌握。
当前新版本的 Matlab 安装包接近 10G!!安装后占用空间更大!!!且正版软件价格不菲。
Python的各个库类似积木的基本单位,可以随意组合。在 Python 基本模块外扩展画图功能只需安装 matplotlib 和numpy、pillow等几个依赖库。绘图包本身大小仅有几十M,安装后占用空间几百M,安装和卸载都十分方便。另外,Python 绘图库开源而且免费。
笔者曾分别或同时使用过Excel、Matlab、Origin、GMT画过图。现在只使用Python可以取代上面所有软件画图。
问4.1:能否像Matlab一样拖入文件右键plot就能画?
问4.2:Python 画图后微调是否需要慢慢修改代码,是否具有Matlab那种直接在图上操作的功能?
答:matplotlib和basemap库需要通过代码读取数据绘图,暂不支持直接拖入数据右键绘图,或在图上直接操作的功能。不确定其他库,或者未来是否会出现新的扩展库支持这些操作。这或许是Python画图相对Matlab的一个小缺点。
不过格式整齐的文本数据使用numpy.loadtxt函数,1-2行代码即可提取出所需数据。Python也支持对csv、excel格式数据的快速读取。微调绘图结果可通过改变代码很快设置完成。对笔者来说,上面两个问题几乎可以忽略。
3 基本操作
问5:Python画图代码的可读性如何,图形种类多不多?
答:引用一个说法,Python的哲学就是“优雅”、“明确”、“简单”,尽量写容易看明白的代码,尽量写少的代码。这是Python的定位,使得Python程序看上去简单易懂,初学者容易入门,学习成本更低。
以最常用的matplotlib库为例,Python可以绘制多种形式,包括普通的点线图,柱状图、直方图,饼图,功率谱图,极坐标图以及误差线图等。参考matplotlib的官方网站https://matplotlib.org/index.html,在其examples页面,给出了上百个常用的绘图脚本及成图样例。
问6:如何批量进行成图处理?
答:假定已经写好了读文件A画A.jpg的函数。得到所有待绘图文件A,B,C,的路径后,通过for循环即可批量成图。例如:
问7:Python的图片如何保存为jpg,bmp,tif等常见格式?
答:matplotlib支持导出emf,eps,pdf,png,ps,raw,rgba,svg,svgz图片格式。安装Pillow库之后,matplotlib可以自动调用Pillow支持导出bmp、eps、gif、jpeg、jpg、tiff等多种格式。
问8:是否方便画双y轴,设置双轴颜色?
答:方便。一个例子如下:
可以看到,ax2=ax1.twinx()语句可以获取第二个y轴元素。对于轴线属性如label颜色、大小,tick的间隔,文字,颜色等的设置都可以通过相应的成员函数实现。
问9.1:图片清晰度和分辨率是否能自己控制?
问9.2:如何设置图片分辨率,dpi等参数?
答:配合设置figsize和dpi这两个参数调整图片像素和分辨率。 通过figsize参数设置画幅大小,单位为英寸:plt.figure(figsize=(8,4)) savefig保存图片时可通过可选参数dpi设置。有的期刊网站要求dpi不低于300。
4 高级操作
问10:如何用Python画世界地图?
问11:图片如何裁去多余的白边?
答:在保存图片 savefig() 时的参数中添加 bbox inches = 'tight',就可以去除因为画幅过大导致图片上下左右的白边。plt.savefig(‘mypic.jpg’, dpi=360, bbox inches='tight')。
另一个可以自动调整绘图区排列的函数是tight_layout(),主要用于自动调整绘图区的大小及间距,使所有的绘图区及其标题、坐标轴标签等都可以协调、完整地显示在画布上。例如可以避免当绘图区的X/Y轴的标签,以及标题的字体非常大,导致这些文字不能完整显示出来。也可以避免创建了多个绘图区,绘图区之间有部分重叠的问题。
问12:多副子图如何共用x/y坐标轴?
答:多副子图共用坐标轴用sharex/sharey参数。如 fig, axs = plt.subplots(1, 3, sharey=True, figsize=(10, 3.5)) 表示从左至右三幅子图共用y轴,只会在左子图上绘制y轴。
问13:怎么样调节子图之间的水平/垂直间隔?
答:接上面的例子,加入代码 fig.subplots_adjust(wspace=0.05) 可以调整三幅子图的水平间隔。垂直间隔设置hspace参数。
问14:x坐标轴如何显示时间?
答:具体例子如下:
5 其他
问15:推荐哪些网站和资料?
答:首推matplotlib的官方网站https://matplotlib.org/index.html,在其examples页面,给出了上百个常用的绘图脚本及成图样例。 其次,多用搜索引擎Google,99.9%的画图问题都可以在里面找到答案。
问16:Python画图的优点?
答:简单总结下,Python画图优点有:
-
脚本语法简单,很容易理解、上手;
-
跨平台(Win/Linux/Mac),开源;
-
安装简单,占用空间很小;
-
封装了一些“高级”属性/函数,比如支持设置dpi;支持去除图片白边;支持自动调整多子图的间隔......
-
使用人数众多,社区活跃。2018年末 Python 在 TIOBE 排行榜中排行第三,是仅次于 Java 、C,排名最高的解释型语言,并被评选为2018年年度编程语言。
问17:Python画图有什么缺陷?
答:个人觉得以下方面还可以继续改进:
-
在脚本操作之外,可以增加辅助的图形化操作,支持类似Excel或Matlab的,文件即托即画功能;
-
成图show之后,支持在图片上直接对轴线、线条、title等进行编辑;
-
简化basemap库安装过程。增加GMT画世界地图的黑白间隔边框效果。
专注于数据科学领域的知识分享
欢迎在文章下方留言与交流
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Development Recipes
Brian P. Hogan、Chris Warren、Mike Weber、Chris Johnson、Aaron Godin / Pragmatic Bookshelf / 2012-1-22 / USD 35.00
You'll see a full spectrum of cutting-edge web development techniques, from UI and eye candy recipes to solutions for data analysis, testing, and web hosting. Make buttons and content stand out with s......一起来看看 《Web Development Recipes》 这本书的介绍吧!