#!/usr/bin/env python # coding: utf-8 # # 基于函数的可视化操作 # ## 函数plt.plot() # 最常用的绘图函数为`plt.plot()`函数。例如,可以用`plt.plot()`函数绘制一条直线,并使用`plt.ylabel()`函数给图像加上一个y轴的标题 # In[1]: from matplotlib import pyplot as plt plt.plot([1,2,3,4]) plt.ylabel('some numbers') plt.show() # 通常,Matplotlib模块不会立即显示绘制的图形,以便后续向图形中添加更多的信息。只有在调用函数`plt.show()`后,绘制的图形才会显示。 # # 默认情况下,Python绘制的图形会以弹窗的形式显示,并提供了一些按钮对生成的图形进行一些简单的操作。 # # 如果使用Jupyter Notebook,plt.show()函数则可以省略,Python也不会弹出绘图窗口,而是在Jupyter Notebook的输出中内嵌图片: # In[2]: plt.plot([1,2,3,4]) plt.ylabel('some numbers') # plt.plot()函数可以绘制基本的点线图,它的使用方式主要有: # # ```python # plt.plot(x, y) # plt.plot(x, y, format_str) # plt.plot(y) # plt.plot(y, format_str) # ``` # # 例如,指定x,y的参数作为点的x轴坐标和y轴坐标时,plt.plot()函数会用一条直线连接两个相邻的点: # In[3]: plt.plot([1,2,3,4], [1,4,9,16]) # 不指定x参数时,x的值默认为range(len(y))。 # In[4]: plt.plot([1,4,9,16]) # 默认情况下,plt.plot()函数用蓝色实线连接两个相邻的坐标点。可以使用格式字符串即参数format_str控制plt.plot()函数绘制图形的格式。 # # 颜色控制符如下表所示。 # # 字符| 颜色 # --|-- # 'b' |蓝色,blue # 'g' |绿色,green # 'r' |红色,red # 'c' |青色,cyan # 'm' |品红,magenta # 'y' |黄色,yellow # 'k' |黑色,black # 'w' |白色,white # # 点线控制符如下表所示。 # # 字符| 类型 |字符 |类型 # --|--|--|-- # '-' |实线 |'--' |虚线 # '-.' |虚点线 |':' |点线 # '.' |点 |',' |像素点 # 'o' |圆点 |'v' |下三角点 # '^' |上三角点 |'<' |左三角点 # '>' |右三角点 |'1' |下三叉点 # '2' |上三叉点 |'3' |左三叉点 # '4' |右三叉点 |'s' |正方点 # 'p' |五角点 |'*' |星形点 # 'h' |六边形点1 |'H' |六边形点2 # '+' |加号点 |'x' |乘号点 # 'D' |实心菱形点 |'d' |瘦菱形点 # '_' |横线点 | | # # 可以单独或者组合使用颜色和点线控制符来控制绘图的格式: # In[5]: plt.plot([1,2,3,4], [1,4,9,16], 'ro') # 图的显示范围可以通过plt.axis()函数控制: # In[6]: plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro') plt.axis([0, 6, 0, 20]) # 还可以同时传入多组数据,将其绘制在同一张图上: # In[7]: import numpy as np # In[8]: t = np.arange(0., 5., 0.2) # 数组也可以作为plt.plot()函数的参数 plt.plot(t, t, 'r--', # 红色虚线 t, t ** 2, 'bs', # 蓝色正方形点 t, t ** 3, 'g^') # 绿色上三角点 plt.show() # plt.plot()函数还支持使用关键字参数来控制绘图的格式。例如,可以使用参数linewidth改变线条的宽度,参数color改变颜色: # In[9]: x = np.linspace(-np.pi,np.pi) y = np.sin(x) plt.plot(x, y, linewidth=2.0, color='r') # 线宽2,颜色红色 plt.show() # 可以通过函数`plt.subplot()`将多张子图画在同一张图片上,其用法为: # ```python # plt.subplot(rows, cols, fignum) # ``` # # 表示在一个`rows`×`cols`大小的画布上,在第`fignum`张图上进行可视化操作,其中`fignum`的计数从1开始。比如`plt.subplot(3, 4, 8)`时,对应的子图排序是: # # ``` # 1,2,3,4 # 5,6,7,8 # 9,10,11,12 # ``` # # 当绘制子图的总数小于10时,可以使用一个三位数字替代上面的用法,如`plt.subplot(3, 3, 1)`可以写成`plt.subplot(331)`。 # # 一个绘制两个子图的例子如下: # In[10]: import numpy as np from matplotlib import pyplot as plt def f(t): return np.exp(-t) * np.cos(2*np.pi*t) t1 = np.arange(0.0, 5.0, 0.1) t2 = np.arange(0.0, 5.0, 0.02) plt.subplot(211) # 定位到第1张子图 plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k') plt.subplot(212) # 定位到第2张子图 plt.plot(t2, np.cos(2*np.pi*t2), 'r--') plt.show() # In[ ]: