实现内容:
1.折线图绘制和保存图片
1.折线绘制
plt.plot(x, y, color=, linestyle=, label=)
x: 横坐标数值
y: 纵坐标数值
color: 折线颜色
linestyle: 线条样式
label: 折线标签
2.图片保存
plt.savefig(path)
path: 图片保存位置
3.画布的设置
plt.figure(figsize=(), dpi= )
figzize:传入元组,第一个数值为长,第二个数值为宽
dpi:dot per inch,每英尺的点数,即可以设置清晰度和分辨率
2.在辅助显示层上完善折线图
1. 更改x、y坐标轴的刻度
plt.xticks(x, x_)
x是修改之前的值
x_是修改之后的值
plt.yticks(y)
y是传入的一个迭代器
2. 中文显示问题
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
3. 网格显示
plt.grid(True, linestyle=, alpha=)
True: 代表的是,显示网格
linestyle: 网格的样式
alpha: 网格线的透明度
4. 添加xy轴和标题
1. x轴y轴标题
plt.xlabel('')
plt.ylabel('')
2. 标题
plt.title('')
3.在图像层上完善折线图
1. 多个plot
2. 图例显示
plt.legend(loc=)
loc: 代表的是图例的位置,best、lower left、lower right、upper left、 upper right、center left、center right
4.多个坐标系的显示-plt.subplots(面对对象的画图方法)
面向对象的画图方式和面向过程的画图过程并不想通过,主要注意的方面如下:
1. 画布的建立方式
plt.subplots(nrow=, ncol=, figsize=, dpi=)
1. nrow: 有几行图
2. ncol: 有几列图
3. figsize和dpi与figure的相同
4. return为figure和axes(图的个数)
2. x轴和y轴的设置方法不同
plt.xlabel-->axes[i].set_xlabel
plt.ylabel-->axes[i].set_ylabel
plt.xticks(x, x_)-->axes[i].set_xticks(x) + axes[i].set_xticklabels(x_)
plt.yticks(y)-->axes[i].set_yticks(y)
plt.title()-->axes[i].set_title()
3. 其他方法类似
plt.legend() --> axes.legend()
plt.grid() --> axes.grid()
5.折线图的应用场景
1. 某种事物随着时间变化的关系
2. 数学函数图像的绘制
只要取的点足够多,那么画出的图像就可以足够光滑
代码:
import matplotlib.pyplot as plt # 1.创建画布 plt.figure() # 2.绘制图像 plt.plot([str(i) for i in range(1, 8)], [13, 17, 15, 10, 19, 11, 17]) # 3.图像显示 plt.show()
输出:
画布属性设置和图像的保存1. 画布属性设置
1. API:plt.figure(figsize=(), dpi= )
figzize:传入元组,第一个数值为长,第二个数值为宽
dpi:dot per inch,每英尺的点数,即可以设置清晰度和分辨率
2. 保存图片的方式
1. 直接在跳出的窗口中保存
2. 在jupyter中右击图片,然后保存到本地
3. 调用api
plt.savefig(path=)
path: 文件路径
注意,在调用保存图片API的时候,要在plt.show()的上方。因为调用过plt.show()以后,就会释放资源,因此保存后的文件就是空白图片。
代码:
import matplotlib.pyplot as plt # 1.创建画布 plt.figure(figsize=(5, 2), dpi=200) # 2.绘制图像 plt.plot([str(i) for i in range(1, 8)], [13, 17, 15, 10, 19, 11, 17]) # 保存图片 plt.savefig('折线图.png') # 3.图像显示 plt.show()
输出:
辅助显示层的完善(改x和y的坐标轴刻度)代码:
import matplotlib.pyplot as plt import random # 1.创建画布 plt.figure(figsize=(20, 8), dpi=200) # 2.绘制图像 plt.plot(range(60), [random.uniform(19, 22) for i in range(60)]) # y刻度的显示 plt.yticks(range(0, 40, 5)) # x刻度的显示 plt.xticks(range(60)[: : 5], ['11时{}分'.format(i * 5) for i in range(12)]) # 3.图像显示 plt.show()
输出:
中文显示的问题解决# 我们可以发现,在上面的图片中,中文全都是乱码的,以下是解决方法 import matplotlib.pyplot as plt import random # 中文显示和正负号问题解决,这是解决的关键!!!! plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 # 1.创建画布 plt.figure(figsize=(20, 8), dpi=200) # 2.绘制图像 plt.plot(range(60), [random.uniform(19, 22) for i in range(60)]) # y刻度的显示 plt.yticks(range(0, 40, 5)) # x刻度的显示 plt.xticks(range(60)[: : 5], ['11时{}分'.format(i * 5) for i in range(12)]) # 3.图像显示 plt.show()添加网格显示
代码:
import matplotlib.pyplot as plt import random # 中文显示和正负号问题解决,这是解决的关键!!!! plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 # 1.创建画布 plt.figure(figsize=(20, 8), dpi=200) # 2.绘制图像 plt.plot(range(60), [random.uniform(19, 22) for i in range(60)]) # y刻度的显示 plt.yticks(range(0, 40, 5)) # x刻度的显示 plt.xticks(range(60)[: : 5], ['11时{}分'.format(i * 5) for i in range(12)]) # 添加网格显示 plt.grid(True, linestyle='-', alpha=0.5) # 3.图像显示 plt.show()
输出:
添加描述信息添加x轴、y轴描述信息及标题
代码:
import matplotlib.pyplot as plt import random # 中文显示和正负号问题解决,这是解决的关键!!!! plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 # 1.创建画布 plt.figure(figsize=(20, 8), dpi=200) # 2.绘制图像 plt.plot(range(60), [random.uniform(19, 22) for i in range(60)]) # y刻度的显示 plt.yticks(range(0, 40, 5)) # x刻度的显示 plt.xticks(range(60)[: : 5], ['11时{}分'.format(i * 5) for i in range(12)]) # 添加网格显示 plt.grid(True, linestyle='-', alpha=0.5) # 标记x轴和y轴和标题 plt.xlabel('时间') plt.ylabel('温度') plt.title('中午11点0分到12点之间的温度变化图例') # 3.图像显示 plt.show()
多个plot进行一张图上多个折线图的绘制
import matplotlib.pyplot as plt import random # 中文显示和正负号问题解决,这是解决的关键!!!! plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 # 1.创建画布 plt.figure(figsize=(20, 8), dpi=200) # 2.绘制图像 plt.plot(range(60), [random.uniform(19, 22) for i in range(60)], color='r', linestyle='-.') plt.plot(range(60), [random.uniform(2, 5) for i in range(60)], color='b') # y刻度的显示 plt.yticks(range(0, 40, 5)) # x刻度的显示 plt.xticks(range(60)[: : 5], ['11时{}分'.format(i * 5) for i in range(12)]) # 添加网格显示 plt.grid(True, linestyle='-', alpha=0.5) # 标记x轴和y轴和标题 plt.xlabel('时间') plt.ylabel('温度') plt.title('上海、北京中午11点0分到12点之间的温度变化图例') # 3.图像显示 plt.show()
输出:
图例的显示import matplotlib.pyplot as plt import random # 中文显示和正负号问题解决,这是解决的关键!!!! plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 # 1.创建画布 plt.figure(figsize=(20, 8), dpi=200) # 2.绘制图像 plt.plot(range(60), [random.uniform(19, 22) for i in range(60)], color='r', linestyle='-.',label='上海') plt.plot(range(60), [random.uniform(2, 5) for i in range(60)], color='b', label='北京') plt.legend() # y刻度的显示 plt.yticks(range(0, 40, 5)) # x刻度的显示 plt.xticks(range(60)[: : 5], ['11时{}分'.format(i * 5) for i in range(12)]) # 添加网格显示 plt.grid(True, linestyle='-', alpha=0.5) # 标记x轴和y轴和标题 plt.xlabel('时间') plt.ylabel('温度') plt.title('上海、北京中午11点0分到12点之间的温度变化图例') # 3.图像显示 plt.show()
输出:
多个子图的绘制:面向对象的绘图方法plt.subplots()
代码:
import matplotlib.pyplot as plt import random # 中文显示和正负号问题解决,这是解决的关键!!!! plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 # 1.创建画布 figure, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100) # 2.绘制图像 axes[0].plot(range(60), [random.uniform(19, 22) for i in range(60)], color='r', linestyle='-.',label='上海') axes[1].plot(range(60), [random.uniform(2, 5) for i in range(60)], color='b', label='北京') axes[0].legend() axes[1].legend() # y刻度的显示 axes[0].set_yticks(range(0, 40, 5)) axes[1].set_yticks(range(0, 40, 5)) # x刻度的显示 axes[0].set_xticks(range(60)[: : 5]) axes[0].set_xticklabels(['11时{}分'.format(i * 5) for i in range(12)]) axes[1].set_xticks(range(60)[: : 5]) axes[1].set_xticklabels(['11时{}分'.format(i * 5) for i in range(12)]) # 添加网格显示 axes[0].grid(True, linestyle='-', alpha=0.5) axes[1].grid(True, linestyle='-', alpha=0.5) # 标记x轴和y轴和标题 axes[0].set_xlabel('时间') axes[0].set_ylabel('温度') axes[0].set_title('上海中午11点0分到12点之间的温度变化图例') axes[1].set_xlabel('时间') axes[1].set_ylabel('温度') axes[1].set_title('北京中午11点0分到12点之间的温度变化图例') # 3.图像显示 plt.show()
输出:
代码:
import numpy as np import matplotlib.pyplot as plt plt.figure(figsize=(10, 5), dpi=100) x = np.linspace(-10, 10, 1000) y = np.sin(x) plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 plt.plot(x, y, label='正弦函数', color='r') plt.show()
输出:
学习地址:
黑马程序员Python教程,4天快速入门Python数据挖掘,系统精讲+实战案例_哔哩哔哩_bilibili
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)