python - 绘制复选框问题:在同一图表上组合多个 catplots
问题描述
我有一些来自我想绘制的“复选框问题”的数据。通过“复选框问题”,我的意思是可以检查多个提议的选项。我使用的系统通过为每个提议的选项创建一列来处理这类问题。如果相应的受访者检查了答案,它会在该列的单元格中放置一个“Y”。因此,数据框如下所示:
年龄 | 选项1 | 选项2 |
---|---|---|
12 | 是 | 是 |
99 | 是 | |
28 | 是 | |
32 |
Seaborn 很容易让我分别“绘制”每个选项。带有蜂群图的示例代码:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
df = pd.DataFrame({'Age': [12, 99, 28, 32], 'Option1': ['Y', np.NaN, 'Y', np.NaN], 'Option2': ['Y', 'Y', np.NaN, np.NaN]})
sns.catplot(x="Option1", y="Age", kind="swarm", data=df)
plt.show()
我想做的是将所有选项的 catplots 组合到一个图中,但我想避免基于网格的子图,而是将图直接组合到同一个图形“区域”上,每个选项有一个 x 轴刻度。期望的结果如下:
我该怎么做?
解决方案
也许melt
首先使用重塑您的数据:
sns.set_style('whitegrid')
...
df = df.melt(id_vars='Age', var_name='Option').dropna()
color = sns.color_palette()[0]
sns.catplot(x='Option', y='Age', kind='swarm', data=df, color=color)
输出:
推荐阅读
- python - 星体太阳计算
- php - wordpress 客户仪表板中的编辑地址问题
- lua - 如何阻止 Lua 脚本运行
- python - 'C:\Users\name' 在 Jupyter 笔记本中未被识别为内部或外部命令、可运行程序或批处理文件
- python-3.6 - pycuda 安装中的警告
- regex - 将正则表达式 (1 + 01)∗ (0 + 10)+ 转换为 NFA
- json - 忽略杰克逊 JSON 解析器中的字段?
- laravel - 将 sendgrid 的事件 webhook 路由到 laravel 中的控制器
- flutter - ChangeNotifier 不更新消费者
- uart - 如何使用 bsl 擦除 msp430f2619 闪存?