绘图库 Matplotlib 入门教程( 二 )


因此 , 下面这段代码的结果是一样的:
import matplotlib.pyplot as pltimport numpy as np data = http://kandian.youth.cn/index/np.arange(100, 201)plt.subplot(211)plt.plot(data) data2 = np.arange(200, 301)plt.subplot(212)plt.plot(data2) plt.show()subplot函数的详细说明参见这里:matplotlib.pyplot.subplot
常用图形示例Matplotlib可以生成非常多的图形式样 , 多到令人惊叹的地步 。 大家可以在这里:Matplotlib Gallery 感受一下 。
本文作为第一次的入门教程 , 我们先来看看最常用的一些图形的绘制 。
线性图前面的例子中 , 线性图的横轴的点都是自动生成的 , 而我们很可能希望主动设置它 。 另外 , 线条我们可能也希望对其进行定制 。 看一下下面这个例子:
# plot.py import matplotlib.pyplot as plt plt.plot([1, 2, 3], [3, 6, 9], '-r')plt.plot([1, 2, 3], [2, 4, 9], ':g') plt.show()这段代码可以让我们得到这样的图形:
绘图库 Matplotlib 入门教程文章插图
这段代码说明如下:

  1. plot函数的第一个数组是横轴的值 , 第二个数组是纵轴的值 , 所以它们一个是直线 , 一个是折线;
  2. 最后一个参数是由两个字符构成的 , 分别是线条的样式和颜色 。 前者是红色的直线 , 后者是绿色的点线 。 关于样式和颜色的说明请参见plot函数的API Doc:matplotlib.pyplot.plot
散点图scatter函数用来绘制散点图 。 同样 , 这个函数也需要两组配对的数据指定x和y轴的坐标 。 下面是一段代码示例:
# scatter.py import matplotlib.pyplot as pltimport numpy as np N = 20 plt.scatter(np.random.rand(N) * 100,np.random.rand(N) * 100,c='r', s=100, alpha=0.5) plt.scatter(np.random.rand(N) * 100,np.random.rand(N) * 100,c='g', s=200, alpha=0.5) plt.scatter(np.random.rand(N) * 100,np.random.rand(N) * 100,c='b', s=300, alpha=0.5) plt.show()这段代码说明如下:
  1. 这幅图包含了三组数据 , 每组数据都包含了20个随机坐标的位置
  2. 参数c表示点的颜色 , s是点的大小 , alpha是透明度
这段代码绘制的图形如下所示:
绘图库 Matplotlib 入门教程文章插图
scatter函数的详细说明参见这里:matplotlib.pyplot.scatter
饼状图pie函数用来绘制饼状图 。 饼状图通常用来表达集合中各个部分的百分比 。
【绘图库 Matplotlib 入门教程】# pie.py import matplotlib.pyplot as pltimport numpy as np labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] data = http://kandian.youth.cn/index/np.random.rand(7) * 100 plt.pie(data, labels=labels, autopct='%1.1f%%')plt.axis('equal')plt.legend() plt.show()这段代码说明如下:
  1. data是一组包含7个数据的随机数值
  2. 图中的标签通过labels来指定
  3. autopct指定了数值的精度格式
  4. plt.axis('equal')设置了坐标轴大小一致
  5. plt.legend()指明要绘制图例(见下图的右上角)
这段代码输出的图形如下所示:
绘图库 Matplotlib 入门教程文章插图
pie函数的详细说明参见这里:matplotlib.pyplot.pie
条形图bar函数用来绘制条形图 。 条形图常常用来描述一组数据的对比情况 , 例如:一周七天 , 每天的城市车流量 。
下面是一个代码示例:
# bar.py import matplotlib.pyplot as pltimport numpy as np N = 7 x = np.arange(N)data = http://kandian.youth.cn/index/np.random.randint(low=0, high=100, size=N)colors = np.random.rand(N * 3).reshape(N, -1)labels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] plt.title("Weekday Data")plt.bar(x, data, alpha=0.8, color=colors, tick_label=labels)plt.show()这段代码说明如下:
  1. 这幅图展示了一组包含7个随机数值的结果 , 每个数值是[0, 100]的随机数
  2. 它们的颜色也是通过随机数生成的 。 np.random.rand(N * 3).reshape(N, -1)表示先生成21(N x 3)个随机数 , 然后将它们组装成7行 , 那么每行就是三个数 , 这对应了颜色的三个组成部分 。 如果不理解这行代码 , 请先学习一下Python 机器学习库 NumPy 教程
  3. title指定了图形的标题 , labels指定了标签 , alpha是透明度
这段代码输出的图形如下所示:
绘图库 Matplotlib 入门教程文章插图
bar函数的详细说明参见这里:matplotlib.pyplot.bar
直方图hist函数用来绘制直方图 。 直方图看起来是条形图有些类似 。 但它们的含义是不一样的 , 直方图描述了数据中某个范围内数据出现的频度 。 这么说有些抽象 , 我们通过一个代码示例来描述就好理解了: