繁体   English   中英

Seaborn 散点图用循环绘制多个图

[英]Seaborn Scatter Plot multiple plots with loop

我有一个数据集,其中包含美国每个州的两列模式,其中一列定义为“cpm”,另一列定义为“支出”。 我试图确定如何遍历每个状态并为每个状态创建一个子图,散点图以 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   

当前结果:

输出

很可能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])

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM