【问题标题】:Seaborn Scatter Plot multiple plots with loopSeaborn 散点图用循环绘制多个图
【发布时间】:2021-02-20 03:54:58
【问题描述】:

我有一个数据集,其中包含美国每个州两列的模式,其中一列定义为“cpm”,另一列定义为“spend”。我正在尝试确定如何循环遍历每个状态并为每个状态创建一个子图,其中散点图以 cpm 作为 x 轴并作为 y 轴花费。虽然我能够为每个状态创建此循环和子图,但我没有看到正在显示的数据。我应该使用不同的 seaborn 情节来实现这一点吗?

代码:

# state list
states = [
    'alabama',
    'alaska',
    'arizona',
]

for state in states[0:3]:
    state_cpm = state + "_" + "cpm"
    state_spend = state + "_" + "spend"

    sns.pairplot(data=df, x_vars=state_cpm, y_vars=state_spend)

// df data example

alabama_cpm | alabama_spend
9.883076 | 63477.0  
10.013527   | 100110.0
10.358303   | 91535.0   

当前结果:

【问题讨论】:

    标签: python pandas matplotlib seaborn


    【解决方案1】:

    sns.scatterplot() 很可能会起作用。 sns.pairplot 仅在您想要列之间的所有成对图时才有效。

    例如数据集是这样的:

    import pandas as pd
    import seaborn as sns
    import numpy as np
    import matplotlib.pyplot as plt
    
    states = ['alabama','alaska','arizona']
    
    df = pd.DataFrame(np.random.uniform(0,1,(20,6)),
                      columns = [i + "_" + j for i in states for j in ['cpm','spend']])
    df.head()
    
    alabama_cpm alabama_spend   alaska_cpm  alaska_spend    arizona_cpm arizona_spend
    0   0.444585    0.305385    0.113950    0.396746    0.450246    0.072074
    1   0.028701    0.446495    0.527090    0.013968    0.367590    0.598380
    2   0.726407    0.214152    0.220744    0.955635    0.337088    0.128571
    

    然后使用您拥有的代码:

    fig, ax = plt.subplots(3,1,figsize=(5,5))
    
    for i,state in enumerate(states[0:3]):
        state_cpm = state + "_" + "cpm"
        state_spend = state + "_" + "spend"
    
        sns.scatterplot(data=df, x=state_cpm, y=state_spend,ax=ax[i])
    

    【讨论】:

    • 这正是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多