仅包含分类数据的散点图

时间:2016-05-18 13:02:11

标签: python matplotlib seaborn

我想绘制一个散点图来直观地表示表单中的数据点(字符串,字符串)。其中每个坐标是从给定的一组String值中取出的字符串,一组用于X轴,另一组用于Y轴。我很难找到一个库 - 可能是python-它只允许表示分类数据(没有数字值)。

我尝试过使用Seaborn swarmplot,但似乎至少有一个坐标必须是数字。

我知道相同的两个坐标会碰撞的点,我希望找到一个代表那些点的库(像簇一样)。

感谢。

1 个答案:

答案 0 :(得分:2)

pandas是一个很棒的图书馆。

您可以使用分类变量创建数据框(请注意数据框创建的dtype='category'参数),然后获取每个分类变量的数字代码,并使用pandas本身或matplotlib或其他任何内容散点图等。

示例:

In [1]: import pandas as pd

In [2]: df = pd.DataFrame({'col1': list('abcab'), 'col2': list('acbbb')}, dtype='category')

In [3]: df
Out[3]:
  col1 col2
0    a    a
1    b    c
2    c    b
3    a    b
4    b    b

In [4]: df_num = df.apply(lambda x: x.cat.codes)

In [5]: df_num
Out[5]:
   col1  col2
0     0     0
1     1     2
2     2     1
3     0     1
4     1     1

In [6]: df_num.plot.scatter('col1', 'col2')

enter image description here