提示:本文只介绍了pyplot的使用,非matplotlib全部内容
前言
本文介绍了matplotlib数据可视化库的基本使用方法。主要内容包括:
1) 通过pyplot.plot()绘制基础图表;
2) 常用api详解,包括设置图片大小(figure)、调整坐标轴刻度(xticks)、中文显示配置、添加图表描述信息等;
3) 完整案例演示三天气温变化折线图的绘制过程,涵盖数据生成、图表样式设置、坐标轴调整、图例添加等关键步骤。
一、matplotlib
matplotlib能将数据可视化,更直观的呈现;
使数据更加客观、更具说服力;
中文参考文档:
matplotlib — matplotlib 3.10.3 文档 - matplotlib 绘图库
二、基础演示
代码如下:
""" matplotlib基础演示 """ from matplotlib import pyplot as plt x = list(range(2, 26, 2)) y = [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15] # 设置图片大小 plt.figure(figsize=(20, 8), dpi=80) # 绘图 plt.plot(x, y) plt.show()
三、部分api
1. 设置图片大小
matplotlib.pyplot.figure,创建一个新图表,或激活一个现有图表。
部分参数:
figsize:(float, float),默认值:rcparams["figure.figsize"] (默认值:[6.4, 4.8])
宽度、高度,单位为英寸。
dpi:float,默认值:rcparams["figure.dpi"] (默认值:100.0)
图表的分辨率,单位为每英寸点数。
2. 调整x轴或y轴上的刻度
matplotlib.pyplot.xticks,获取或设置 x 轴当前的刻度位置和标签。
ticks:类数组,可选。x刻度位置列表。传入空列表将移除所有x刻度。
labels:类数组, 可选。放置在给定 ticks 位置的标签。此参数只能在同时传递 ticks 时使用。
rotation:float,默认值:0。刻度旋转度数,避免拥堵。
当刻度太密集,使用列表的步长(间隔取值)来解决
# 设置x轴刻度 设置为0.5间隔的 plt.xticks(list(i / 2 for i in range(4, 49))[::3]) # 设置y刻度值 plt.yticks(range(min(y), max(y) + 1))
刻度为字符串类型时,同时提供ticks和labels参数
# 设置x轴刻度(每10分钟显示一个标签) _xtick_label = [f"10点{i}分" for i in range(60)] + [f"11点{i}分" for i in range(60)] plt.xticks(list(x_data)[::5], _xtick_label[::5], rotation=45) # 旋转45度避免重叠
3. 设置中文显示
import matplotlib # 设置中文字体 & 负号 matplotlib.rcparams['font.family'] = 'microsoft yahei' matplotlib.rcparams['axes.unicode_minus'] = false
4. 添加描述信息
4.1 x、y轴的描述信息
matplotlib.pyplot.xlabel,设置 x 轴的标签。(y轴:matplotlib.pyplot.ylabel,参数相同)
xlabel:str,标签文本。
labelpad:float, 默认值: rcparams["axes.labelpad"] (默认值: 4.0)
从坐标轴边界框(包括刻度线和刻度标签)开始的间距(以点为单位)。如果为 none,则保留先前的值。
loc:{'left', 'center', 'right'}, 默认值: rcparams["xaxis.labellocation"] (默认值: 'center')
标签位置。这是传递参数 x 和 horizontalalignment 的高级替代方案。
4.2 图表标题
matplotlib.pyplot.title,为 axes 设置标题。设置三个可用坐标轴标题之一。这些可用标题位于坐标轴上方,可居中、左对齐或右对齐。
label:字符串,用于标题的文本
loc:{'center', 'left', 'right'},默认值:rcparams["axes.titlelocation"](默认值:'center')
要设置的标题位置。
y:浮点数,默认值:rcparams["axes.titley"](默认值:none)
标题的垂直轴位置(1.0 为顶部)。如果为 none(默认值),且rcparams["axes.titley"](默认值:none)也为 none,则 y 会自动确定以避免轴上的装饰器。
pad:浮点数,默认值:rcparams["axes.titlepad"](默认值:6.0)
标题相对于坐标轴顶部的偏移量,以点为单位。
5. 图表绘制
matplotlib.pyplot.plot,将 y 对 x 绘制为线和/或标记。
调用:
- plot([x], y, [fmt], *, data=none, **kwargs)
- plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
可以使用 line2d 属性作为关键字参数,以更好地控制外观
6. 显示图例
matplotlib.pyplot.legend,在 axes 上放置图例。
方式一
当您不传入任何额外参数时,要添加到图例中的元素将自动确定。
在这种情况下,标签取自 artist(plot设置参数label后返回的对象)
也可以使用artist 上的 set_label() 方法来指定。
plt.plot(x_data, y_data, color='red', label='气温')
方式二
分别传递一个图例艺术对象的可迭代对象,后跟一个图例标签的可迭代对象。
plt.legend([line1, line2, line3], ['label1', 'label2', 'label3'])
方式三
类似于方法2,但标签取自艺术对象的标签属性。
line1, = plt.plot([1, 2, 3], label='label1') line2, = plt.plot([1, 2, 3], label='label2') plt.legend(handles=[line1, line2])
四、案例
""" 绘制三天的10点到12点每分钟的气温 """ from matplotlib import pyplot as plt import random from datetime import datetime, timedelta # 设置中文字体 & 负号 plt.rcparams['font.family'] = 'simhei' plt.rcparams['axes.unicode_minus'] = false # 生成数据 start_time = datetime.strptime("10:00", "%h:%m") # 起始时间10:00 x_data = [(start_time + timedelta(minutes=i)).strftime("%h:%m") for i in range(120)] # 生成10:00-12:00的hh:mm格式时间 y_data1 = [random.randint(10, 30) for _ in range(120)] # 随机生成10-30℃的气温数据 y_data2 = [random.randint(10, 30) for _ in range(120)] # 随机生成10-30℃的气温数据 y_data3 = [random.randint(10, 30) for _ in range(120)] # 随机生成10-30℃的气温数据 # 设置图形大小 plt.figure(figsize=(15, 5), dpi=100) # 绘制折线图 plt.plot(x_data, y_data1, color='red', linestyle='-', linewidth=1, marker='.', markersize=5, label="one") plt.plot(x_data, y_data2, color='#00ff00', linestyle='-.', linewidth=1, marker='.', markersize=5, label="two") plt.plot(x_data, y_data3, color='#87ceeb', linestyle=':', linewidth=1, marker='.', markersize=5, label="three") # 设置x轴刻度(每10分钟显示一个标签) plt.xticks(x_data[::10], rotation=45) # 旋转45度避免重叠 # 添加标题和标签 plt.title("10:00-12:00每分钟气温变化", fontsize=14) plt.xlabel("时间", fontsize=12) plt.ylabel("温度(℃)", fontsize=12) plt.grid(alpha=0.3) # 半透明网格线 plt.legend() # 显示图例 # 自动调整布局防止标签被截断 plt.tight_layout() # 显示图形 plt.show()
总结
到此这篇关于python大数据处理之matplotlib.pyplot初步使用的文章就介绍到这了,更多相关python matplotlib.pyplot使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论