用python绘制各种散点图

基础散点图

在这里插入图片描述

实现代码如下:

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库来绘制散点图,散点图是一种用于展示两个变量之间关系的图表。下面是代码的逐步解释:

  1. import matplotlib.pyplot as pltimport seaborn as sns

    • 这两行代码导入了matplotlib和seaborn库。matplotlib是一个用于创建静态、交互式和实时的2D图表的Python库。seaborn是基于matplotlib的高级绘图库,它提供了一个高级接口,用于绘制吸引人的统计图形。
  2. plt.rcParams['font.family'] = 'Microsoft YaHei'

    • 这行代码设置了图表中使用的字体为Microsoft YaHei,这是一种常用的中文字体,确保中文字符能够正确显示。
  3. sns.set_palette("colorblind")

    • 这行代码设置了图表的颜色调色板为“colorblind”,这是一个为色盲用户设计的调色板,使用不同的颜色和图案来区分不同的数据组。
  4. plt.scatter(df["断货次数"], df["asin毛利率H2"])

    • 这行代码使用matplotlib的scatter函数绘制散点图。
    • df["断货次数"]:指定散点图的x轴数据,即每个点的横坐标值。
    • df["asin毛利率H2"]:指定散点图的y轴数据,即每个点的纵坐标值。
  5. plt.xlabel("断货次数")plt.ylabel("asin日均销量")

    • 这两行代码分别设置了散点图的x轴和y轴的标签。
  6. plt.title('FBA配件asin(2023H2)')

    • 这行代码设置了散点图的标题。
  7. 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库来创建图表的脚本。下面是每一步的详细解释:

  1. 导入库:

    import seaborn as sns
    import matplotlib.pyplot as plt
    

    这两行代码导入了Seaborn和Matplotlib库,它们是Python中用于数据可视化的两个常用库。

  2. 数据分组(注释掉的部分):

    # grouped = df.loc[df['categoryName']=='Headlight Bulbs'].groupby(['集团', '新品程度'])
    

    这行代码被注释掉了,如果取消注释,它会从DataFrame df 中选择 categoryName 为 “Headlight Bulbs” 的行,然后按照 '集团''新品程度' 列对数据进行分组。这通常用于对特定子集的数据进行操作。

  3. 设置调色板(注释掉的部分):

    # sns.set_palette("hls")##hls\pastel\colorblind\deep
    

    这行代码也被注释掉了,它设置了Seaborn的调色板。调色板定义了图表中不同类别的颜色。这里提到了几种预设的调色板,如 "hls""pastel""colorblind""deep"

  4. 创建画布:

    fig, ax = plt.subplots()
    

    这行代码创建了一个新的Matplotlib图表对象 fig 和一个轴对象 axplt.subplots() 函数返回一个包含图表和轴的元组。

  5. 绘制柱形散点图:

    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 参数设置了点的大小。

  6. 调整坐标轴标签角度:

    plt.xticks(rotation=0)
    

    这行代码设置了x轴标签的旋转角度,这里设置为0度,即标签水平显示。

  7. 添加图例:

    handles, labels = ax.get_legend_handles_labels()
    legend = plt.legend(handles, labels, loc='upper right', title='新品程度')
    legend.get_title().set_fontsize('12')
    

    这几行代码获取了当前轴上的图例句柄和标签,然后创建了一个新的图例,并将其放置在图表的右上角。图例的标题字体大小被设置为12。

  8. 添加标题:

    ax.set_title('市场上asin的上新和价格的情况')
    

    这行代码为图表设置了一个标题。

  9. 显示图形:

    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库来创建图表的脚本,用于可视化不同品牌的产品价格与销量的关系。下面是每一步的详细解释:

  1. 导入库:

    import seaborn as sns
    import matplotlib.pyplot as plt
    

    这两行代码导入了Seaborn和Matplotlib库,它们是Python中用于数据可视化的两个常用库。

  2. 数据分组(注释掉的部分):

    # grouped = df.loc[df['categoryName']=='Headlight Bulbs'].groupby(['集团', '新品程度'])
    

    这行代码被注释掉了,如果取消注释,它会从DataFrame df 中选择 categoryName 为 “Headlight Bulbs” 的行,然后按照 '集团''新品程度' 列对数据进行分组。

  3. 设置调色板(注释掉的部分):

    # sns.set_palette("hls")##hls\pastel\colorblind\deep
    

    这行代码也被注释掉了,它设置了Seaborn的调色板。调色板定义了图表中不同类别的颜色。

  4. 创建画布:

    fig, ax = plt.subplots()
    

    这行代码创建了一个新的Matplotlib图表对象 fig 和一个轴对象 ax

  5. 绘制柱形散点图(注释掉的部分):

    # sns.stripplot(x='categoryName', y='price_', data=df, hue='新品程度', jitter=True, alpha=0.5, size=5, ax=ax)
    

    这行代码被注释掉了,如果取消注释,它会使用Seaborn的 stripplot 函数绘制一个柱形散点图,显示不同新品程度下产品类别与价格的关系。

  6. 调整坐标轴标签角度(注释掉的部分):

    # plt.xticks(rotation=0)
    

    这行代码被注释掉了,它设置了x轴标签的旋转角度。

  7. 定义品牌列表:

    brands = df['Brand'].unique().tolist()
    brands = ['A', 'B', 'C', 'D']
    

    这两行代码首先获取 dfBrand 列的所有唯一值,然后创建一个品牌列表,这里硬编码为 ['A', 'B', 'C', 'D']

  8. 绘制散点图:

    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 参数设置了颜色方案。

  9. 添加网格线:

    plt.grid(True, linewidth=1, alpha=1)
    

    这行代码添加了网格线到图表中,True 参数启用网格线,linewidth 参数设置了网格线的宽度,alpha 参数设置了网格线的透明度。

  10. 显示图形:

    plt.show()
    

    这行代码显示了最终的图表。

请注意,这段代码中有一些变量和数据 (df) 没有在代码片段中定义,它们应该在代码片段之外的某个地方定义。此外,注释掉的部分需要取消注释并提供相应的DataFrame df 才能执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐木叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值