import matplotlib.pyplot as pltdata = {'apple': 10, 'orange': 15, 'lemon': 5, 'lime': 20}names = list(data.keys())values = list(data.values())fig, axs = plt.subplots(1, 3, figsize=(9, 3), sharey=True)axs[0].bar(names, values)axs[1].scatter(names, values)axs[2].plot(names, values)fig.suptitle('Categorical Plotting')plt.show()
# 1. 导入库import matplotlib.pyplot as plt# 2. 定义数据data = {'apple': 10, 'orange': 15, 'lemon': 5, 'lime': 20}# data 是一个字典,键为水果名称,值为对应的数值。# 将键和值分别提取为列表 names 和 values,用于后续绘图。names = list(data.keys()) # ['apple', 'orange', 'lemon', 'lime']values = list(data.values()) # # [10, 15, 5, 20]# 3. 创建子图布局fig, axs = plt.subplots(1, 3, figsize=(9, 3), sharey=True)# 创建一个包含 1 行 3 列 子图的图形,返回 fig(整个图形对象)和 axs(包含三个子图对象的数组)。# figsize=(9, 3):设置图形整体尺寸为宽 9 英寸、高 3 英寸,使三个子图水平排列且宽度适中。# sharey=True:使所有子图共享 y 轴范围,即 y 轴刻度范围自动调整为所有数据中的最大最小值,保证各子图纵轴一致,方便比较。# 4. 绘制条形图axs[0].bar(names, values)# 在第一个子图(axs[0])上绘制垂直条形图。# bar(names, values) 将水果名称作为 x 轴类别,数值作为条形高度。# 条形图默认在类别位置绘制条形,并自动设置 x 轴刻度标签为 names。# 5. 绘制散点图axs[1].scatter(names, values)# 在第二个子图(axs[1])上绘制散点图。# scatter(names, values) 将水果名称作为 x 坐标,数值作为 y 坐标。# 由于 x 轴数据是字符串,matplotlib 会将其自动转换为索引 0, 1, 2, 3,并仍使用 names 作为 x 轴刻度标签,# 因此散点会出现在对应的类别位置。# 6. 绘制折线图axs[2].plot(names, values)# 在第三个子图(axs[2])上绘制折线图。# # plot(names, values) 同样将类别转换为数值索引,并连接数据点形成折线。# 默认会绘制线条和数据点(可另行控制),x 轴刻度标签仍为水果名称。# 7. 设置总标题fig.suptitle('Categorical Plotting') # 为整个图形设置一个总标题“Categorical Plotting”,显示在所有子图上方。# 8. 显示图形plt.show()