绘制不同公司在两个市场中的销量小提琴图如上,发现:
- 需要核查原始数据集的销量数据是否规范,是否有负数或空缺值的情况
- 从左数,
– 第一个公司在两个市场下的销售量比较平均,在蓝色代表的市场中占领头部
– 第二个基本没有在橙色代表的市场上有布局,和第一家公司在蓝色代表的市场中是激烈的竞争关系
– 第三家公司在蓝色代表的市场中基本在末尾,橙色市场中也比较分散,
– 第四家公司体量应该最小没什么水花
实现代码如下
import matplotlib.pyplot as plt
import seaborn as sns
# 设置字体为 Microsoft YaHei
plt.rcParams['font.family'] = 'Microsoft YaHei'
# 设置调色板
sns.set_palette("colorblind")
# 绘制图表
fig, ax = plt.subplots()
ax = sns.violinplot(x="集团", y="sales", hue="categoryName", split=True, data=d[d['Automotive_rank'] <= how_high]) #split为True就把两个小提琴放一起了
ax.set_title('Distribution of total bill amount per day', fontsize=16)
plt.show()
这段代码是使用Python的matplotlib和seaborn库来绘制小提琴图(violin plot),这是一种用于展示数据分布的可视化方法,特别适用于显示多个组的分布情况。下面是代码的逐步解释:
-
import matplotlib.pyplot as plt
和import seaborn as sns
:- 这两行代码导入了matplotlib和seaborn库。matplotlib是一个用于创建静态、交互式和实时的2D图表的Python库。seaborn是基于matplotlib的高级绘图库,它提供了一个高级接口,用于绘制吸引人的统计图形。
-
plt.rcParams['font.family'] = 'Microsoft YaHei'
:- 这行代码设置了图表中使用的字体为Microsoft YaHei,这是一种常用的中文字体,确保中文字符能够正确显示。
-
sns.set_palette("colorblind")
:- 这行代码设置了图表的颜色调色板为“colorblind”,这是一个为色盲用户设计的调色板,使用不同的颜色和图案来区分不同的数据组。
-
fig, ax = plt.subplots()
:- 这行代码创建了一个图表对象
fig
和一个坐标轴对象ax
。plt.subplots()
是一个方便的工厂函数,用于创建一个图形和一个或多个子图。
- 这行代码创建了一个图表对象
-
ax = sns.violinplot(x="集团", y="sales", hue="categoryName", split=True, data=d[d['Automotive_rank'] <= how_high])
:sns.violinplot()
是seaborn库中用于绘制小提琴图的函数。x="集团"
:指定小提琴图的x轴数据,即每个小提琴代表的分组。y="sales"
:指定小提琴图的y轴数据,即每个分组的数值。hue="categoryName"
:指定颜色分组,即在每个小提琴内部,根据categoryName
的不同,用不同的颜色表示不同的子组。split=True
:当hue参数存在时,这个参数设置为True会将每个小提琴图分成两部分,以显示不同子组的分布。data=d[d['Automotive_rank'] <= how_high]
:指定绘制图表的数据源,这里是一个DataFramed
,并且通过条件筛选只选择Automotive_rank
小于或等于how_high
的行。
-
ax.set_title('Distribution of total bill amount per day', fontsize=16)
:- 这行代码设置了图表的标题,并且指定了标题的字体大小。
-
plt.show()
:- 这行代码显示了图表。在Jupyter Notebook或其他IDE中,这会导致图表在输出中显示。
其他参数和应用案例:
linewidth
:设置小提琴图边缘的线宽。inner
:控制小提琴内部的展示方式,可以是"quartile"(默认,显示四分位数),“std”(显示标准差),“point”(显示每个数据点)等。scale
:控制小提琴图的宽度,可以是"area"(根据数据量自动调整宽度)或"width"(固定宽度)。orient
:控制小提琴图的方向,可以是"v"(垂直,默认)或"h"(水平)。
更多应用案例:
- 比较不同地区销售额的分布。
- 展示不同年龄段人群的收入分布。
- 比较不同产品类别的评分分布。
这些图表非常适合于展示和比较数据的分布特征,尤其是当数据具有偏态分布或者有多模态(多个峰值)时。