当前位置:首页>python>python数据可视化技巧的100个练习 -- 42. 销售对比的哑铃点图

python数据可视化技巧的100个练习 -- 42. 销售对比的哑铃点图

  • 2026-10-11 07:03:20
python数据可视化技巧的100个练习 -- 42. 销售对比的哑铃点图
重要性★★★★☆
难度★★★☆☆
您是一家零售公司的数据分析师。公司希望比较两个季度之间的销售业绩。
公司已向您提供了 Q1 和 Q2 各产品类别的销售数据。
您的任务是创建一个哑铃点图,以直观地表示这两个季度之间每个类别的销售变化。
该图表应清晰显示两个季度的销售值以及它们之间的差异。
使用 Python 生成样本数据,处理数据并创建哑铃点图。
确保包含适当的标签和格式,使图表易于解读。

【数据生成代码示例】

import pandas as pdimport numpy as npnp.random.seed(42)categories = ['Electronics', 'Clothing', 'Home', 'Books', 'Sports', 'Food']q1_sales = np.random.randint(100, 1000, len(categories))q2_sales = q1_sales + np.random.randint(-200, 400, len(categories))data = pd.DataFrame({'Category': categories, 'Q1_Sales': q1_sales, 'Q2_Sales': q2_sales})

【图表答案】

【代码答案】

import pandas as pd import numpy as np import matplotlib.pyplot as plt np.random.seed(42) categories = ['Electronics', 'Clothing', 'Home', 'Books', 'Sports', 'Food'] q1_sales = np.random.randint(100, 1000, len(categories)) q2_sales = q1_sales + np.random.randint(-200, 400, len(categories))data = pd.DataFrame({'Category': categories, 'Q1_Sales': q1_sales, 'Q2_Sales': q2_sales}) fig, ax = plt.subplots(figsize=(10, 6)) y_positions = range(len(categories)) # Plot lines connecting Q1 and Q2 sales [plt.plot([row.Q1_Sales, row.Q2_Sales], [i, i], 'o-', color='gray', linewidth=1) for i, row in data.iterrows()] # Plot Q1 sales (blue dots) ax.scatter(data['Q1_Sales'], y_positions, color='blue', s=50, label='Q1 销售额') # Plot Q2 sales (red dots) ax.scatter(data['Q2_Sales'], y_positions, color='red', s=50, label='Q2 销售额') # Set y-axis labels and ticks ax.set_yticks(y_positions) ax.set_yticklabels(categories) # Set labels and title ax.set_xlabel('销售额($)') ax.set_title('Q1 与 Q2 销售额对比') ax.legend() # Add grid lines ax.grid(True, axis='x', linestyle='--', alpha=0.7) # Adjust layout and display plot plt.tight_layout() plt.show()
这段代码创建了一个哑铃点图,用于比较不同产品类别在两个季度之间的销售数据。
以下是数据处理和可视化的详细步骤:

数据生成

使用 NumPy 为 Q1 和 Q2 生成随机销售数据。
np.random.seed(42) 确保随机数据的可重复性。
创建一个 pandas DataFrame 来存储类别名称和销售数据。

图表设置

使用 matplotlib 创建图表,设置图表大小为 10×6 英寸。
创建 y_positions 变量以确定每个类别的垂直位置。

绘制哑铃线

使用带有 plt.plot() 的列表推导式为每个类别绘制连接 Q1 和 Q2 销售的线。
这些线为灰色,两端有圆形标记。

绘制销售点

使用 ax.scatter() 绘制 Q1 销售额为蓝色点,Q2 销售额为红色点。
s=50 参数设置点的大小。

Y 轴格式化

将 y 轴刻度设置为与 y_positions 匹配,并用类别名称标记。

标签和标题

添加 x 轴标签“销售额($)”并设置图表标题。
添加图例以区分 Q1 和 Q2 销售额。

网格线

添加垂直网格线,便于读取销售值。

最终调整

使用 plt.tight_layout() 自动调整图表布局。
最后,使用 plt.show() 显示图表。
这种可视化技术有效地显示了每个产品类别在 Q1 和 Q2 之间的销售变化。
哑铃设计便于比较两个值,线条的长度表示变化的幅度。
颜色编码(Q1 为蓝色,Q2 为红色)进一步提高了图表的可读性。

【小知识】

  • 哑铃图(也称为 DNA 图或杠铃图)非常适合比较多个类别中的两个相关值。
  • 这种图表因其类似于哑铃重量的外观而得名,两个数据点通过一条线连接。
  • 哑铃图特别适用于商业环境中的前后比较,例如不同时间段的销售业绩。
  • 在数据科学中,使用 np.random.seed() 技术至关重要,它可确保可重复性,使其他人能够生成相同的“随机”数据。
  • 用于绘图的 matplotlib 高度可定制,除了哑铃图外,还可以创建各种统计图形。
  • 在数据可视化中,将“小倍数”原则(为不同类别重复相同的图表类型)有效地应用于哑铃图。
  • 在此示例中使用 pandas DataFrame 展示了其在处理结构化数据方面的多功能性,无论是在分析还是可视化任务中。


系列完整内容可以在公众号主页搜索或点击分栏找到,欢迎扫码关注预防迷路找不到。感谢您的支持与相伴。

最新文章

随机文章