> 技术文档 > Python大数据-matplotlib.pyplot初步使用

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()