Python大数据-matplotlib.pyplot初步使用
提示:本文只介绍了pyplot的使用,非matplotlib全部内容
文章目录
前言
一、matplotlib
二、基础演示
三、部分API
1. 设置图片大小
2. 调整x轴或y轴上的刻度
3. 设置中文显示
4. 添加描述信息
4.1 x、y轴的描述信息
4.2 图表标题
5. 图表绘制
6. 显示图例
方式一
方式二
方式三
四、案例
前言
本文介绍了Matplotlib数据可视化库的基本使用方法。主要内容包括:
1) 通过pyplot.plot()绘制基础图表;
2) 常用API详解,包括设置图片大小(figure)、调整坐标轴刻度(xticks)、中文显示配置、添加图表描述信息等;
3) 完整案例演示三天气温变化折线图的绘制过程,涵盖数据生成、图表样式设置、坐标轴调整、图例添加等关键步骤。
一、matplotlib
matplotlib能将数据可视化,更直观的呈现;
使数据更加客观、更具说服力;
中文参考文档:
matplotlib — Matplotlib 3.10.3 文档 - Matplotlib 绘图库
二、基础演示
代码如下:
\"\"\"matplotlib基础演示\"\"\"from matplotlib import pyplot as pltx = 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 pltimport randomfrom datetime import datetime, timedelta# 设置中文字体 & 负号plt.rcParams[\'font.family\'] = \'SimHei\'plt.rcParams[\'axes.unicode_minus\'] = False# 生成数据start_time = datetime.strptime(\"10:00\", \"%H:%M\") # 起始时间10:00x_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()