pyplot的那些奇技淫巧
周日终于把可塑性的这篇文章交给王博士看了, 昨天也把pku的合作的文章的群落聚类图给做出来了, 可以小喘息一会; 不过9月初还得回学校, 事情一点也不少. 趁着今天有时间, 把这几天绘图的一些”心得体会”梳理一下咯.
Matplotlib可以说是Python绘图唯一选择, 可惜就是官方文档超级难用, 各种类的嵌套关系不明不白, 到网上一搜问题, Stack Overflow出来的解答都是10yrs ago… 在此机会整理一个属于自己的pyplot使用大全.
初始化定义与常用绘图
一张画布叫Figure
, 画布中的一个方框图标叫Axes
, 每一个Axes
的两个轴叫Axis
.
梳理好这个结构的话, 那最标准的初始化代码是:
1 |
|
因此, 具体数据的绘制, 都是在Axes
对象下进行的. 这段时间用到的绘图有:
1 |
|
而设置具体的格式(主要是坐标轴、标签等行为), 也主要是以Axes
为出发. 具体见下节.
Axes行为控制
ticks & labels & ticklabels
ticks
就是坐标轴上的小点点, ticklabel
是对应tick
的文字标注. 可以使用多种方法设定其格式, 比较推荐的是:
1 |
|
但是需要注意, 这种方法似乎没法设定旋转后的ticklabel
的alignment信息.
另外的一种方法ax.set_xticks()
也有类似的作用, 我是拿来作间隔tick
用的:
1 |
|
另外还有就是对不同轴的意义的描述, 称为label
. 使用下面的语句设定.
1 |
|
发现了吧, 哪里都能设置字体, 而且有的是size
有的是fontsize
之类的[/晕]
其他行为控制
剩下的一些控制, 列在下面:
1 |
|
指定全局字体
1 |
|
这样一条语句, 放在fig定义之前, 可以设定全局默认字体与字号; 其中的family
字段还可以设置成字体的类别, 如normal
, monospace
等等.
多y轴/多x轴图表
有些图需要展示多重信息, 比如同时展示一段时间内的气温变化与降雨量, 则需要左边y
轴标明温度, 右边y
轴标明是降雨量.
在Matplotlib中, 使用ax.twinx()
来生成一个新的Axes
, 这个新Axes
和之前的ax
共用一个x
轴, 因此也就是双y
轴图表.
多个图表的堆叠, 可以使用zorder
区分关系, 越大的zorder
代表越靠近顶端; 但是不要忘了给上层图表设置facecolor
为none
, 即”底色为透明而不是白色”, 方便下层图表的展示.
1 |
|
去掉Axes内的间隔
如上图所示, 07-19
左边是没有空格的. 但是默认的绘图, 最左边和最右边的xtick
两侧都会有一定的空白. 可以通过以下设置去除:
1 |
|
Finally
暂时就想到这么多, 之后的内容再补充. 难得小休息一下, 明天要继续看论文咯.
_________, 启动!