在Python中进行数据可视化最常用且功能强大的库是Matplotlib。它可以帮助你轻松绘制出柱状图、折线图、饼图、散点图、直方图、箱线图、热力图、雷达图等。在开始之前请确保你已经安装了Matplotlib库。如果没有可以在终端或命令行中运行以下命令进行安装pip install matplotlib1.折线图 (Line Chart)折线图非常适合展示数据随时间变化的趋势。import matplotlib.pyplot as plt # 解决中文显示问题 (Windows系统使用SimHeiMac系统可换成PingFang SC) plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # 准备数据 months [1月, 2月, 3月, 4月, 5月, 6月] sales [78,85,74,95,84,80] # 绘制折线图 plt.figure(figsize(8, 5)) # 设置画布大小 plt.plot(months, sales, markero, colorblue, linewidth2, label销售额) # 添加标题和标签 plt.title(上半年销售额趋势) plt.xlabel(月份) plt.ylabel(销售额元) plt.legend() # 显示图例 plt.grid(True, linestyle--, alpha0.5) # 添加网格线 plt.show()效果图2.柱状图 (Bar Chart)柱状图适合比较不同类别之间的数值大小。import matplotlib.pyplot as plt # 解决中文显示问题 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # 准备数据 products [手机, 电脑, 耳机, 平板, 手表] sales [78,85,74,95,84] # 绘制柱状图 plt.figure(figsize(8, 5)) plt.bar(products, sales, colororange, width0.6) # 在柱子顶部添加具体的数值标签 for index, value in enumerate(sales): plt.text(index, value 10, str(value), hacenter) # 添加标题和标签 plt.title(不同产品销量对比) plt.xlabel(产品) plt.ylabel(销量) plt.show()效果图3.饼图 (Pie Chart)饼图主要用于展示各部分数据在整体中的占比关系。import matplotlib.pyplot as plt # 解决中文显示问题 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # 准备数据 channels [搜索引擎, 短视频, 社交媒体, 直接访问, 邮件] users [1000, 500, 300, 400, 200] # 绘制饼图 plt.figure(figsize(7, 7)) plt.pie( users, labelschannels, autopct%.1f%%, # 显示百分比并保留1位小数 startangle90, # 设置饼图起始角度 counterclockFalse # 按顺时针方向绘制 ) plt.title(用户来源占比) plt.show()效果图4.散点图 (Scatter Plot)测试数据模拟了100名学生的“每日学习时长”与“期末考试成绩”之间的关系用来观察两者是否存在正相关。import matplotlib.pyplot as plt import numpy as np # 设置中文显示 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # 生成测试数据100个学生的学习时长(1-8小时)和对应的成绩 np.random.seed(42) # 固定随机种子保证每次运行结果一致 study_hours np.random.uniform(1, 8, 100) # 成绩 学习时长 * 8 基础分40 随机波动 scores study_hours * 8 40 np.random.normal(0, 5, 100) # 绘制散点图 plt.figure(figsize(8, 5)) plt.scatter(study_hours, scores, colorskyblue, edgecolorsblack, alpha0.7) plt.title(学习时长与考试成绩的关系, fontsize14) plt.xlabel(每日学习时长 (小时)) plt.ylabel(考试成绩 (分)) plt.grid(True, linestyle--, alpha0.5) plt.show()效果图5.直方图 (Histogram)测试数据模拟了1000名成年男性的身高数据符合正态分布用来展示身高的整体分布区间。import matplotlib.pyplot as plt import numpy as np # 设置中文显示 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # 生成测试数据1000名男性的身高 (均值175cm标准差7cm) np.random.seed(42) heights np.random.normal(175, 7, 1000) # 绘制直方图 plt.figure(figsize(8, 5)) # bins30 表示将数据分成30个区间color设置颜色edgecolor设置柱子边框色 plt.hist(heights, bins30, colormediumseagreen, edgecolorblack, alpha0.7) plt.title(成年男性身高分布情况, fontsize14) plt.xlabel(身高 (cm)) plt.ylabel(人数) plt.grid(axisy, linestyle--, alpha0.5) plt.show()效果图6.箱线图 (Box Plot)测试数据模拟了 A、B、C 三个不同班级学生的数学成绩用来对比各班的平均水平、波动范围以及识别异常低分/高分。import matplotlib.pyplot as plt import numpy as np # 设置中文显示 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # 生成测试数据三个班级的数学成绩 np.random.seed(42) class_A np.random.normal(75, 10, 100) # A班均值75标准差10 class_B np.random.normal(80, 8, 100) # B班均值80标准差8 class_C np.random.normal(70, 12, 100) # C班均值70标准差12波动更大 # 将数据组合成列表传入 data_to_plot [class_A, class_B, class_C] labels [A班, B班, C班] # 绘制箱线图 plt.figure(figsize(8, 5)) plt.boxplot(data_to_plot, labelslabels, patch_artistTrue, boxpropsdict(facecolorlightcoral, colorblack), medianpropsdict(colorwhite)) plt.title(三个班级数学成绩分布对比, fontsize14) plt.ylabel(数学成绩) plt.grid(axisy, linestyle--, alpha0.5) plt.show()效果图7.热力图 (Heatmap)绘制热力图我们需要用到更美观的seaborn库。请先在终端或命令行中运行以下命令安装依赖pip install matplotlib seaborn numpy pandas测试数据模拟了一周7天内某电商平台在24小时内的每小时订单量矩阵用来直观查看哪个时间段是下单高峰期。import matplotlib.pyplot as plt import seaborn as sns import numpy as np import pandas as pd # 设置中文显示 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # 生成测试数据7天 x 24小时的订单量矩阵 np.random.seed(42) days [周一, 周二, 周三, 周四, 周五, 周六, 周日] hours [f{h}点 for h in range(24)] # 模拟数据周末和晚间订单量较高 orders np.random.randint(10, 100, size(7, 24)) orders[5:, 18:23] 50 # 周末晚间增加订单量 # 将数据转换为 DataFrame df pd.DataFrame(orders, indexdays, columnshours) # 绘制热力图 plt.figure(figsize(14, 6)) # annotTrue 显示数值fmtd 表示显示为整数cmap 设置颜色主题 sns.heatmap(df, annotFalse, fmtd, cmapYlOrRd, cbar_kws{label: 订单量}) plt.title(一周内每小时订单量热力图, fontsize14) plt.xlabel(时间) plt.ylabel(星期) plt.show()效果图8.雷达图radar chart雷达图也叫蜘蛛图非常适合用来展示多维度的数据比如评估一个人的综合能力、对比不同产品的性能指标等。在 Python 中我们可以使用matplotlib的极坐标系polar coordinates来绘制。以下是包含完整测试数据的可运行实例模拟了两名游戏角色的六维能力对比import matplotlib.pyplot as plt import numpy as np # 设置中文显示 (Windows系统使用SimHeiMac系统可换成PingFang SC) plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # 1. 准备测试数据 # 设定6个能力维度 categories [攻击, 防御, 速度, 耐力, 技术, 策略] num_vars len(categories) # 角色A的能力值假设是均衡型战士 stats_A [85, 90, 70, 88, 75, 80] # 角色B的能力值假设是高攻高速刺客 stats_B [95, 60, 92, 65, 88, 70] # 2. 计算每个维度的角度 # 将圆周(2*pi)平均分成 N 份 angles np.linspace(0, 2 * np.pi, num_vars, endpointFalse).tolist() # 3. 闭合图形 # 雷达图需要首尾相连所以要把第一个维度的角度和数据追加到列表末尾 stats_A stats_A[:1] stats_B stats_B[:1] angles angles[:1] # 4. 创建极坐标画布并绘图 fig, ax plt.subplots(figsize(8, 8), subplot_kwdict(polarTrue)) # 绘制角色A的折线和填充区域 ax.plot(angles, stats_A, colorblue, linewidth2, linestylesolid, label角色 A (均衡型)) ax.fill(angles, stats_A, colorblue, alpha0.2) # 绘制角色B的折线和填充区域 ax.plot(angles, stats_B, colorred, linewidth2, linestylesolid, label角色 B (刺客型)) ax.fill(angles, stats_B, colorred, alpha0.2) # 5. 美化图表 # 设置半径能力值的范围留出一点空间给图例 ax.set_ylim(0, 100) # 设置维度标签攻击、防御等 ax.set_xticks(angles[:-1]) ax.set_xticklabels(categories, size12) # 添加图例 plt.legend(locupper right, bbox_to_anchor(1.3, 1.1)) # 添加标题 plt.title(游戏角色六维能力对比雷达图, size16, pad20) plt.show()效果图