python作为一门编程语言长期受到IT,科学工作者的青睐。其众多优秀的开源库大大缩短了程序编写工作者的工作量,而且对于许多科学运算库(或包)经历长期的更新和改进,运算效率得到很大提升。对于一个初级的程序猿,如果自己去实现一些运算过程,实现后的效率肯定远不及稳定包中的实现过程。
matplotlib是一个近似于Matlab绘图的开源库,具备很强的绘图功能,可能只有你想不到的图不能通过matplotlib绘制。下面就matplotlib.pyplot列举一个示例,涉及到绘制legend,特殊符号,设置坐标轴Ticks。
- 首先,我们先生成序列,用于绘制曲线。
import matplotlib.pyplot as plt
import matplotlib.ticker as tkr
import numpy as np
x = np.arange(-5,5,0.1);
y1 = np.sin(2*x+np.pi/3);
y2 = np.cos(x);
- 新建figure,获取figure的句柄。
myfig = plt.figure(21);
- 新建plot。这里使用一种可以自定义plot位置和大小的方式新建一个plot。当然也可以使用
plt.subplot()
来实现新建plot。通过调整[left, bottom, width, height]
四个参数可以调节plot的位置和大小(width
,height
)。
### And plot to figure: [left, bottom, width, height]
ax1 = myfig.add_axes([0.2,0.2,0.5,0.32]);
- 绘制曲线。
ax1.plot(x,y1,label="y1");
ax1.plot(x,y2,label="y2");
- 绘制坐标轴label。在绘制Y轴的label时,使用了一个特殊符号‘℃’,该符号的Unicode编码为
\u2103
,Unicode编码之前的字符u
表示Unicode。
plt.xlabel("Time (s)");
## set y label a unique char (degree centigrade)
plt.ylabel(("%s%c%s") % ("Temperature(",u"\u2103",")"));
- 设置两次plot的legend。如果需要单独控制每条曲线(符号)的legend,在上述4步骤中应该在plot时获取plot和axis的句柄。详情可参考文末列出的参考网站(matplotlib的官方文档)。
## set legend
ax1.legend(loc='upper left',fontsize=8);
- 设置坐标轴的Ticks。下面分别展示两种不同方法。设置X轴ticks的方法可以指定major ticks,minor ticks的间隔,在科学绘图中应该是非常有用了,还可以设置ticks的显示格式,此处只显示了浮点数位数的控制,实际上还有很多格式控制可选,包括百分比(%)等。设置Y轴的ticks时,使用的方法可以具体控制每个位置(值)的ticks名称。更多的设置可参考文末列出的参考网站(matplotlib的官方文档)。
## set X axis's ticks (major and minor)
ax1.xaxis.set_major_locator(tkr.MultipleLocator(2.0));
ax1.xaxis.set_minor_locator(tkr.MultipleLocator(1.0));
## set the str format of major ticker of X axis
ax1.xaxis.set_major_formatter(tkr.FormatStrFormatter("%2.1f"));
## set Y axis's ticks
### position str
plt.yticks((-1,1),('Low','High'));
plt.ylim((-1.2,1.2));
- 希腊字母,上下标的输出。
## write formulus to plot
plt.text(1.3,0.8,r'('+'$\mu\mathrm{mol}$'+' '+'$m^{-2}.s^{-1})$'+' $A_n$',fontsize=15,horizontalalignment='center',verticalalignment='center');
- 保存图片,可选的格式很多了,包括png,pdf,tif等。
# Save figure
plt.savefig("./pyplotLegend.pdf",dpi=600,format='pdf');
展示下结果图
参考网站
感谢提供强大matplotlib库,详尽使用文档的python社区全体开发,维护者。