python数据可视化技巧的100个练习 -- 45. 分布数据的欢乐图
您的任务是可视化不同地区的月度销售数据分布,以识别模式和趋势。您决定使用欢乐图(也称为山脊图)来显示每个地区的销售数据分布。为五个地区生成 12 个月的样本销售数据,并创建欢乐图以可视化分布。【数据生成代码示例】
import numpy as npimport pandas as pdregions = ['North', 'South', 'East', 'West', 'Central']# 创建一个字典来存储销售数据data = { 'Month': np.tile(np.arange(1, 13), len(regions)), 'Region': np.repeat(regions, 12), 'Sales': np.random.randint(1000, 5000, 12 * len(regions))}# 将字典转换为 DataFramedf = pd.DataFrame(data)df
【图表答案】
【代码答案】
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 创建样本数据 regions = ['North', 'South', 'East', 'West', 'Central'] data = { 'Month': np.tile(np.arange(1, 13), len(regions)), 'Region': np.repeat(regions, 12), 'Sales': np.random.randint(1000, 5000, 12 * len(regions))} df = pd.DataFrame(data) # 设置图表sns.set(style='whitegrid') g = sns.FacetGrid(df, row='Region', hue='Region', aspect=4, height=1.5, palette='muted') # 绘制每个分布g.map(sns.kdeplot, 'Sales', fill=True) g.map(plt.axhline, y=0, lw=2, clip_on=False) g.fig.subplots_adjust(hspace=-0.3) # 移除与重叠效果不兼容的轴细节g.set_titles("") g.set(yticks=[]) g.despine(bottom=True, left=True) # 显示图表plt.show()
解题步骤
导入必要的库:
生成样本数据:
设置图表:
绘制每个分布:
调整图表样式:
显示图表:
小知识
欢乐图:因 Joy Division 乐队的专辑《Unknown Pleasures》封面而得名,该封面由一系列堆叠的折线图组成。用途:特别适用于可视化多个类别或时间段的数据分布。seaborn:基于 matplotlib 的高级可视化库,提供了美观的默认样式和丰富的绘图功能。核密度估计:通过 sns.kdeplot 绘制,用于估计数据的概率密度函数,提供数据分布的平滑表示。
系列完整内容可以在公众号主页搜索或点击分栏找到,欢迎扫码关注预防迷路找不到。感谢您的支持与相伴。
