当这些数据没有“分类”标签时,我对如何使用 seaborn.stripplot() 绘制多列数据点感到有些困惑。

例如,用户可以使用 tips 数据集绘制“分组”散点图,如下所示:

import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt

import seaborn as sns

tips = sns.load_dataset("tips")   # internal dataset

print(tips)

     total_bill   tip     sex smoker   day    time  size
0         16.99  1.01  Female     No   Sun  Dinner     2
1         10.34  1.66    Male     No   Sun  Dinner     3
2         21.01  3.50    Male     No   Sun  Dinner     3
3         23.68  3.31    Male     No   Sun  Dinner     2
4         24.59  3.61  Female     No   Sun  Dinner     4
5         25.29  4.71    Male     No   Sun  Dinner     4
....      .....      .....      .....

有按类别 day 分组在一起的测量值,我们生成散点图如下:
sns.stripplot(x="day", y="total_bill", data=tips)

python - 如何使用非分类数据绘制  "grouped scatterplot"?-LMLPHP

现在,我想用非分类数据重新生成这个“分组散点图格式”图,每列中有数据:
df = pd.read_csv("my_data.csv")

df

      total_bill_A   total_bill_B    total_bill_C   total_bill_D
0     16.99          21.01           15.99          14.50
1     10.34          21.66           12.99          16.50
2     21.01          23.50           7.25           17.50
3     23.68          23.31           9.99           12.50
4     24.59          23.61           10.00          15.50
5     25.29          24.71           11.00          19.50
....               ....

这里的 y 轴是 price ,x 轴应该是这些列中的每一列, total_bill_Atotal_bill_Btotal_bill_Ctotal_bill_D ,类似于上面的星期四、星期五、星期六、星期日。

我怎么能绘制像这些 seaborn 这样的东西?可以用 seaborn.stripplot() 做到这一点吗?

最佳答案

您可以 melt 数据帧并相应地命名参数以应用于 stripplot,如下所示:

df_strip = pd.melt(df, var_name='total_bill', value_name='price')
sns.stripplot(x="total_bill", y="price", data=df_strip)

python - 如何使用非分类数据绘制  "grouped scatterplot"?-LMLPHP

关于python - 如何使用非分类数据绘制 "grouped scatterplot"?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38958925/

10-13 07:37
查看更多