如何用非分类数据绘制 "grouped scatterplot"?
How to plot a "grouped scatterplot" with non-categorical data?
当这些数据没有 "categorical" 标签时,我有点困惑如何使用 seaborn.stripplot()
绘制多列数据点。
例如,用户可以绘制 "grouped" 散点图如下,使用 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)
现在,我想用非分类数据重新制作这个 "grouped scatterplot format" 图,每列都有数据:
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_A
、total_bill_B
、total_bill_C
和 [=21] =],类似于上面的周四、周五、周六、周日。
我怎么能画出这样的东西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)
当这些数据没有 "categorical" 标签时,我有点困惑如何使用 seaborn.stripplot()
绘制多列数据点。
例如,用户可以绘制 "grouped" 散点图如下,使用 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)
现在,我想用非分类数据重新制作这个 "grouped scatterplot format" 图,每列都有数据:
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_A
、total_bill_B
、total_bill_C
和 [=21] =],类似于上面的周四、周五、周六、周日。
我怎么能画出这样的东西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)