1. Matplotlib绘图流程
- 创建画布
- 绘制图像
显示图像
下面代码演示#简单画布 import matplotlib.pyplot as plt # 1.创建画布 plt.figure() #2. 图像绘制 x = range(6) y = range(4,10) plt.plot(x,y) #3. 图像显示 plt.show()
2.基础功能演示
1.画布参数:figure
- figsize:画布大小设置,分别是x,y轴反向的大小
dpi:画布分辨率:
plt.figure(figsize=(20,10),dpi=200)
2.图像保存:savefige
- 需要在展示图像的前面设置,plt.show()会释放figure资源,如果在显示图像之后保存图像只能保存空图像。
参数写保存的图片地址。
plt.savefige('test.png')
3.自定义刻度:xticks,yticks
- plt.xticks(x,**kwargs):x要显示的刻度值
plt.yticks(y,**kwargs):y要显示的刻度值
- 第一参数为需要显示的刻度值,需要数字类型
- 第二个参数为要显示刻度名,如果没写,显示第一个参数创建的刻度值
matplotlib.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus']=False # 正常显示负号
更多解决方法请点击链接查看:https://blog.csdn.net/qq_17753903/article/details/86260276
4.添加网格信息:grid
plt.grid(True,linestyle='--',alpha=1)
- True:表示添加
linestyle:表示添加的是虚线还是实线
- 一个-表示实线
- 两个--表示虚线
alpha:表示对应的透明度
5.添加描述信息
- plt.xlabel:x轴标签
- plt.ylabel:y轴标签
plt.title:数据表标题
plt.xlabel('时间') plt.ylabel("温度") plt.title("一小时温度变化图",fontsize=20)
效果如下:可用fontsizea参数调节字体大小
5.多个信息
只需在原有的基础再次添加plot即可,但需区分线条,那就需要显示图例
plt.legend()
- loc:显示位置,值默认为best,可填入0-10
- 需要在plot里面添加label信息
location string | location code |
---|---|
best | 0 |
upper right | 1 |
upper left | 2 |
lower left | 3 |
lower right | 4 |
right | 5 |
center left | 6 |
center right | 7 |
lower center | 8 |
upper center | 9 |
center | 10 |
6. 设置图形风格
plt.polt(x,y,color="r",linestyle='--',label='北京')
- x:x轴数据
- y:y轴数据
- color:折线颜色
- linestyle:线条形状
- lebel:线条标签名
颜色字符 | 风格字符 |
---|---|
r红色 | - 实线 |
g绿色 | -- 虚线 |
b蓝色 | -. 点划线 |
w白色 | : 点虚线 |
c青色 | '' 留空,空格 |
m洋红 | |
y黄色 | |
k黑色 |
7.多个坐标系显示:plt.subplots(面向对象的画图方法)
显示效果如下:
fig,axes = plt.subplot(nrows=2,ncols=1,figsize=(20.8),dpi=200)
- nrows:表示绘制几行图像
- ncols:表示绘制几列图像
注意:有些方法需要添加set_*,
以下是一个与多个区别,代码演示。#温度实例 import matplotlib.pyplot as plt import random import matplotlib matplotlib.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文 matplotlib.rcParams['axes.unicode_minus']=False x = range(60) y_beijing = [random.uniform(10,15) for i in x] y_shanghai = [random.uniform(10,15) for i in x] ## 画布 #plt.figure(figsize=(20,8),dpi=100) fig,axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=200) ## 图像绘制 # plt.plot(x,y_beijing,label='北京') # plt.plot(x,y_shanghai,label='上海',linestyle=':') axes[0].plot(x,y_beijing,color='r',label='北京') axes[1].plot(x,y_shanghai,label='上海',linestyle=':') ## y刻度 y_ticks=range(40) # plt.yticks(y_ticks[::5]) axes[0].set_yticks(y_ticks[::5]) axes[1].set_yticks(y_ticks[::5]) # #x刻度 x_ticks_label = ['11点{}分'.format(i) for i in x] # plt.xticks(x[::5],x_ticks_label[::5]) axes[0].set_xticks(x[::5]) axes[0].set_xticklabels(x_ticks_label[::5]) axes[1].set_xticks(x[::5]) axes[1].set_xticklabels(x_ticks_label[::5]) # #添加网格 # plt.grid(True,linestyle='-',alpha=1) axes[0].grid(True,linestyle='-',alpha=1) axes[1].grid(True,linestyle='-',alpha=1) # #添加信息 # plt.xlabel('时间') # plt.ylabel("温度") # plt.title("一小时温度变化图",fontsize=20) axes[0].set_xlabel('时间') axes[0].set_ylabel("温度") axes[0].set_title("北京一小时温度变化图",fontsize=20) axes[1].set_xlabel('时间') axes[1].set_ylabel("温度") axes[1].set_title("上海一小时温度变化图",fontsize=20) # #显示图例 # plt.legend(loc='best',fontsize=20) axes[0].legend(loc='best',fontsize=20) axes[1].legend(loc='best',fontsize=20) plt.show()
plot绘制数学图像(爱心)
效果如下:
具体代码如下
import numpy as np
#生成数据
x = np.linspace(-np.pi/2,np.pi/2,500) # 在【Π/2,Π/2】的范围内生成500个数
y=(0.64*np.sqrt(abs(x))-0.8+1.2**abs(x)*np.cos(200*x))*np.sqrt(np.cos(x))
plt.figure(figsize=(10,10),dpi=50)
plt.plot(x,y,color='r')
plt.grid()
plt.show()
评论 (0)