matplotlib初探

 Python

前言

最近摸索了Python的画图库Matplotlib,其画的图要多炫丽有多炫丽,要多优雅有多优雅,真的有被震撼到,最近项目要求需要画图,考虑到matlab虽然博大精深,但却不易上手,貌似网上最近也在盛传“是否matplotlib能取代matlab”的诸多言论,对于一个旁观者和门外汉,我不做评论,我只有一个理念:什么好学用什么。另外,对于语言的学习和掌握,我现在有一个特别明晰的目标,就是以后以Python为主轴,C\C++作为辅助,算法为核心来展开。

半年前就接触Python,但期间由于没有一个特定的目标,东捡一点西捡一点,到头来总是在重复同样的事情。现在觉得需要什么学什么,带有目标地去学习才能提高效率,也才能记忆犹新,废话不多说,本文就简单的说说matplotlib。由于刚入门,也没有什么心得,仅仅是看了matplotlib tutorial的一点笔记记录。由于手册是英文版,所以,本文算是对原文的翻译,但我会完全脱离原文的思路,用自己的思路来写,外加自己的一些引申的东西。在进入主题之前,先看下这个知乎大牛关于如何在论文中画出漂亮的插图的探讨,先目睹一下matplotlib所体现出炫丽与优雅。

简单概念

Numpy 是Python中用于科学计算的一个基本的包(Package),下面来看看Numpy的官方定义:
NumPy is the fundamental package for scientific computing with Python. It contains among other things:

  • a powerful N-dimensional array object
  • sophisticated (broadcasting) functions
  • tools for integrating C/C++ and Fortran code
  • useful linear algebra, Fourier transform, and random number capabilities

简单的理解Numpy就是:其为数值定义了特定的结构和规则,方便对不同的数值,甚至复杂的数值进行运算(这里说的数值是广义上的),如多维数组结构等。

JabRef:一款和CTex配套使用的文献管理软件,就像Endnote和Word配套一样,在写Abstract或review时,其默认只能输入英文,输入中文则乱码,解决办法:
first set Options||Preferences||General>>Default Encoding as UTF8
then set Options||Preferences||Appearance>>Set table font as simsun (or any other Chinese fonts)

效果非常好。如果还有问题,可将Entry Preview里改为

Pycharm:一款方便调试,并集成了多个库的Python IDE,个人感觉非常好用,如C\C++的VS和Codeblock,java的eclipse,安装默认不支持中文编码,在注释的时候出现乱码,解决办法:
File-settings-file and code templates-python script中改成:
# -- coding: utf-8 --
然后File-settings-file encoding改成UTF-8编码

设置字体大小,行号
File->Settings->Editor->Colors & Font -> Font

File->Settings->Editor->Apperance -> 选上Show line numbers

总结:一般这种编码乱码问题,都是由于编码不支持造成的,找到相关地方进行修改就可以了,一般都会在Setting里面。关于中英文编码问题,详见这篇文章,写得非常nice。
字符编码

最近在写Python的一些小程序,由于没有系统地学习过Python的语法及编码风格,在编码规范上栽了几个跟头。先看看我遇到的这两个问题,接着引出Python的编码规范。

缩进问题

缩进是Python中最重要的,也是最容易出错的细节,这个对于每个初学者都要牢记于心并养成习惯,我的问题出在,从一个文本文档拷贝一段代码到一个IDE的时候,出现了如下的两个错误。

IndentationError: unindent does not match any outer indentation level 
IndentationError:expected an indented block  

特殊符号的打印方法

打印单引号:print (“‘’”)
打印双引号:print (‘“”‘)
打印换行符:print (‘\n’)
打印反斜杠:print (‘\‘)

总结:一般情况下单引号和双引号的作用都是相同的.