如何使用非分类数据绘制“分组散点图”?

时间:2016-08-15 16:21:26

标签: python pandas matplotlib plot seaborn

当这些数据没有“分类”标签时,我有点困惑如何使用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)

enter image description here

现在,我想重新制作这个带有非分类数据的“分组散点图格式”图,每列都有数据:

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()执行此操作?

1 个答案:

答案 0 :(得分:3)

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

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

Image