python - matplotlib:绘制多维数据帧的二维散点图
问题描述
我有以下数据框,它显示了多个变量,包括年份、性别、国籍和总人数。
+---------+---+---+----------+
| range |Sex|NOC|sum(count)|
+---------+---+---+----------+
|2000-2020| M|SUR| 13|
|2000-2020| M|SRI| 33|
|1940-1960| F|YUG| 86|
|1980-2000| F|IND| 54|
|1900-1920| M|GBR| 1636|
|2000-2020| M|AFG| 13|
+---------+---+---+----------+
我想在 matplotlib 或 seaborn 中绘制以下散点图。我怎样才能做到这一点
解决方案
您需要取消堆叠sex
列以获得另外两列:M
和F
. 肮脏的例子:
>>> df_ = df.set_index(['year', 'noc', 'sex']).unstack().reset_index()
>>> df_.columns = [''.join(col).strip() for col in df_.columns.values]
然后你可以使用 seaborn:
>>> sb.scatterplot(x='sumM', y='sumF', hue='year', data=df)
推荐阅读
- typescript - 是否可以拥有基于实例的存储,或者有更好的方法来实现这一点?
- javascript - 追加后尝试做一些jquery代码
- node.js - Angular Universal 仅显示第一页的页面源
- android - 在 Android Studio 2.3.3 中更新到 gradle 3.2.1 不起作用
- python - 为什么我的Trackbar的值总是-1
- lisp - Lisp 3的倍数之和
- sml - SML:从元组列表中创建一个列表,每个元组的第二个元素
- python - Python:“NoneType”对象不可下标“错误
- php - PHP 持久延迟 HTTP 连接
- php - 在 laravel 6 上安装 Doctrine 失败