module 1 可视化基础②
Part 2 基础语法
2.1 pyplot基础语法、绘图流程
1.创建画布与创建子图
第一部分主要作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。最简单的绘图可以省略第一部分,而后直接在默认的画布上进行图形绘制。
2.添加画布内容
第二部分是绘图的主体部分。其中添加标题,坐标轴名称,绘制图形等步骤是并列的,没有先后顺序,可以先绘制图形,也可以先添加各类标签。但是添加图例一定要在绘制图形之后。
3.保存与展示图形
- 为什么保存的图片是空白的?
请注意:保存一定要在显示图形的前面,否则,可能会出现保存的图片使空白的!
2.1 具体应用
1、绘制散点图
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x) + np.random.random(len(x))
plt.scatter(x, y)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x) + np.random.rand(100)
plt.rcParams['font.sans-serif'] = 'SimHei' # 中文显示
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(9, 5))
plt.title('sin散点')
plt.scatter(x, y)
plt.show()
- 标题title(sin散点)无法正常显示怎么办?
加入:
plt.rcParams['font.sans-serif'] = 'SimHei' # 中文显示 plt.rcParams['axes.unicode_minus'] = False
2、折线图
x = np.linspace(0, 2*math.pi, 100)
y = np.sin(x) + np.random.random(len(x))
plt.scatter(x, y)
plt.plot(x, y, 'r')
plt.plot(x, np.sin(x)+0.5, 'g')
plt.show()
注意
如果为plot()命令提供单个列表或数组 ,matplotlib假定它是一系列y值,并自动为您生成x值。由于python范围以0开头,因此默认的x向量与y的长度相同,但以0开头。因此x数据为 [0,1,2,3]。
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
plt.show()
3 柱状图
x = range(10)
np.random.seed(123)
y1 = np.random.random(10)
y2 = np.random.random(10)
plt.bar(x, y1, facecolor='r')
plt.bar(x, -y2, facecolor='g')
for i, j in zip(x, y1):
plt.text(i, j, '%.2f'%j, ha='center', va='bottom')
for i, j in zip(x, y2):
plt.text(i, -j, '%.2f'%j, ha='center', va='top')
plt.title('$\pi$')
plt.show()
4 饼图
z = np.ones(10)
plt.figure(figsize=(5, 5))
plt.pie(z, autopct='%.2f%%', explode=[0.1]+ [0]*9, labels=list('ABCDEFGHIJ'), labeldistance=1.1)
plt.show()
5 注释
- text()上面基本命令的使用将文本放在Axes上的任意位置。文本的常见用途是注释绘图的某些功能,并且该 annotate()方法提供帮助功能以使注释变得容易。在注释中,有两点需要考虑:注释的位置由参数xy和文本的位置表示xytext。这两个参数都是(x,y)元组。
- xy(箭头提示)和xytext 位置(文本位置)都在数据坐标中
6 标题
# matplotlib在任何文本表达式中接受TeX方程表达式。编写一个由美元符号包围的TeX表达式。
plt.title(r'$\sigma_i=15$')