基础散点图
实现代码如下:
import matplotlib.pyplot as plt
import seaborn as sns
# 设置字体为 Microsoft YaHei
plt.rcParams['font.family'] = 'Microsoft YaHei'
# 设置调色板
sns.set_palette("colorblind")
# 绘制散点图
plt.scatter(df["断货次数"], df["asin毛利率H2"])
plt.xlabel("断货次数")
plt.ylabel("asin日均销量")
plt.title('FBA配件asin(2023H2)')
plt.show()
这段代码使用Python的matplotlib和seaborn库来绘制散点图,散点图是一种用于展示两个变量之间关系的图表。下面是代码的逐步解释:
-
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”,这是一个为色盲用户设计的调色板,使用不同的颜色和图案来区分不同的数据组。
-
plt.scatter(df["断货次数"], df["asin毛利率H2"])
:- 这行代码使用matplotlib的
scatter
函数绘制散点图。 df["断货次数"]
:指定散点图的x轴数据,即每个点的横坐标值。df["asin毛利率H2"]
:指定散点图的y轴数据,即每个点的纵坐标值。
- 这行代码使用matplotlib的
-
plt.xlabel("断货次数")
和plt.ylabel("asin日均销量")
:- 这两行代码分别设置了散点图的x轴和y轴的标签。
-
plt.title('FBA配件asin(2023H2)')
:- 这行代码设置了散点图的标题。
-
plt.show()
:- 这行代码显示了图表。在Jupyter Notebook或其他IDE中,这会导致图表在输出中显示。
import seaborn as sns
import matplotlib.pyplot as plt
# 按照集团和新品程度对数据进行分组
# grouped = df.loc[df['categoryName']=='Headlight Bulbs'].groupby(['集团', '新品程度'])
# 设置调色板
# sns.set_palette("hls")##hls\pastel\colorblind\deep
# 创建一个空的画布
fig, ax = plt.subplots()
# 绘制柱形散点图
sns.stripplot(x='categoryName', y='price_', data=df, hue='新品程度', jitter=True, alpha=0.5, size=5, ax=ax)
# 调整坐标轴标签角度,防止重叠
plt.xticks(rotation=0)
# 添加图例
handles, labels = ax.get_legend_handles_labels()
legend = plt.legend(handles, labels, loc='upper right', title='新品程度')
legend.get_title().set_fontsize('12')
# 添加标题
ax.set_title('市场上asin的上新和价格的情况')
# 显示图形
plt.show()
将不同品牌的点用不同颜色做区分,绘制散点图
brands = df['Brand'].unique().tolist()
brands = ['A', 'B', 'C', 'D']
sns.scatterplot(data=df.loc[df['Brand'].isin(brands)], x='price_', y='sales', hue='Brand', hue_order=brands, palette='bright')
plt.grid(True, linewidth=1, alpha=1)
plt.show()
这段代码是一个使用Python的Seaborn和Matplotlib库来创建图表的脚本。下面是每一步的详细解释:
-
导入库:
import seaborn as sns import matplotlib.pyplot as plt
这两行代码导入了Seaborn和Matplotlib库,它们是Python中用于数据可视化的两个常用库。
-
数据分组(注释掉的部分):
# grouped = df.loc[df['categoryName']=='Headlight Bulbs'].groupby(['集团', '新品程度'])
这行代码被注释掉了,如果取消注释,它会从DataFrame
df
中选择categoryName
为 “Headlight Bulbs” 的行,然后按照'集团'
和'新品程度'
列对数据进行分组。这通常用于对特定子集的数据进行操作。 -
设置调色板(注释掉的部分):
# sns.set_palette("hls")##hls\pastel\colorblind\deep
这行代码也被注释掉了,它设置了Seaborn的调色板。调色板定义了图表中不同类别的颜色。这里提到了几种预设的调色板,如
"hls"
、"pastel"
、"colorblind"
和"deep"
。 -
创建画布:
fig, ax = plt.subplots()
这行代码创建了一个新的Matplotlib图表对象
fig
和一个轴对象ax
。plt.subplots()
函数返回一个包含图表和轴的元组。 -
绘制柱形散点图:
sns.stripplot(x='categoryName', y='price_', data=df, hue='新品程度', jitter=True, alpha=0.5, size=5, ax=ax)
这行代码使用Seaborn的
stripplot
函数绘制了一个柱形散点图。x
参数指定了横坐标的列名,y
参数指定了纵坐标的列名。data
参数指定了数据来源。hue
参数用于根据 ‘新品程度’ 列的不同值来改变颜色。jitter
参数添加了随机扰动,以减少数据点的重叠。alpha
参数设置了透明度。size
参数设置了点的大小。 -
调整坐标轴标签角度:
plt.xticks(rotation=0)
这行代码设置了x轴标签的旋转角度,这里设置为0度,即标签水平显示。
-
添加图例:
handles, labels = ax.get_legend_handles_labels() legend = plt.legend(handles, labels, loc='upper right', title='新品程度') legend.get_title().set_fontsize('12')
这几行代码获取了当前轴上的图例句柄和标签,然后创建了一个新的图例,并将其放置在图表的右上角。图例的标题字体大小被设置为12。
-
添加标题:
ax.set_title('市场上asin的上新和价格的情况')
这行代码为图表设置了一个标题。
-
显示图形:
plt.show()
这行代码显示了最终的图表。在Jupyter Notebook等交互式环境中,这会导致图表在输出中显示。
请注意,这段代码中有一些变量和数据 (df
, grouped
) 没有在代码片段中定义,它们应该在代码片段之外的某个地方定义。此外,注释掉的部分需要取消注释并提供相应的DataFrame df
才能执行。
增加绘制回归线
import matplotlib.animation as animation
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 设置字体为 Microsoft YaHei
plt.rcParams['font.family'] = 'Microsoft YaHei'
# 读取数据
dff = pd.read_excel(r'D:\workingg\过去一年的损益.xlsx', sheet_name='原始')
# 按品牌汇总销售额和推广费用
df = dff.groupby('品牌').agg({'销售额': 'sum', '推广合计': 'sum'}).reset_index()
brands = df['品牌'].unique().tolist()
# 绘制散点图和拟合线
sns.regplot(data=df.loc[df['品牌'].isin(brands)], x='推广合计', y='销售额', scatter_kws={'s': 100}, line_kws={'color': 'red'})
sns.scatterplot(data=df.loc[df['品牌'].isin(brands)], x='推广合计', y='销售额', hue='品牌', hue_order=brands, palette='bright')
# 设置图例
plt.legend(title='品牌', loc='upper left')
# 在每个散点附近添加品牌名称
for i in range(len(df)):
if df.iloc[i]['品牌'] in ["Sealight", "Torchbeam", "LAXMAS"]:
plt.annotate(df.iloc[i]['品牌'], (df.iloc[i]['推广合计'], df.iloc[i]['销售额']))
plt.grid(True, linewidth=1, alpha=1)
plt.title("过去一年各品牌的情况")
plt.show()
这段代码是使用Python的Seaborn和Matplotlib库来创建图表的脚本,用于可视化不同品牌的产品价格与销量的关系。下面是每一步的详细解释:
-
导入库:
import seaborn as sns import matplotlib.pyplot as plt
这两行代码导入了Seaborn和Matplotlib库,它们是Python中用于数据可视化的两个常用库。
-
数据分组(注释掉的部分):
# grouped = df.loc[df['categoryName']=='Headlight Bulbs'].groupby(['集团', '新品程度'])
这行代码被注释掉了,如果取消注释,它会从DataFrame
df
中选择categoryName
为 “Headlight Bulbs” 的行,然后按照'集团'
和'新品程度'
列对数据进行分组。 -
设置调色板(注释掉的部分):
# sns.set_palette("hls")##hls\pastel\colorblind\deep
这行代码也被注释掉了,它设置了Seaborn的调色板。调色板定义了图表中不同类别的颜色。
-
创建画布:
fig, ax = plt.subplots()
这行代码创建了一个新的Matplotlib图表对象
fig
和一个轴对象ax
。 -
绘制柱形散点图(注释掉的部分):
# sns.stripplot(x='categoryName', y='price_', data=df, hue='新品程度', jitter=True, alpha=0.5, size=5, ax=ax)
这行代码被注释掉了,如果取消注释,它会使用Seaborn的
stripplot
函数绘制一个柱形散点图,显示不同新品程度下产品类别与价格的关系。 -
调整坐标轴标签角度(注释掉的部分):
# plt.xticks(rotation=0)
这行代码被注释掉了,它设置了x轴标签的旋转角度。
-
定义品牌列表:
brands = df['Brand'].unique().tolist() brands = ['A', 'B', 'C', 'D']
这两行代码首先获取
df
中Brand
列的所有唯一值,然后创建一个品牌列表,这里硬编码为['A', 'B', 'C', 'D']
。 -
绘制散点图:
sns.scatterplot(data=df.loc[df['Brand'].isin(brands)], x='price_', y='sales', hue='Brand', hue_order=brands, palette='bright')
这行代码使用Seaborn的
scatterplot
函数绘制了一个散点图,显示了选定品牌的价格与销量的关系。hue
参数用于根据品牌来改变颜色,hue_order
参数指定了颜色的顺序,palette
参数设置了颜色方案。 -
添加网格线:
plt.grid(True, linewidth=1, alpha=1)
这行代码添加了网格线到图表中,
True
参数启用网格线,linewidth
参数设置了网格线的宽度,alpha
参数设置了网格线的透明度。 -
显示图形:
plt.show()
这行代码显示了最终的图表。
请注意,这段代码中有一些变量和数据 (df
) 没有在代码片段中定义,它们应该在代码片段之外的某个地方定义。此外,注释掉的部分需要取消注释并提供相应的DataFrame df
才能执行。