Python 如何为seaborn histplot绘制不均匀数量的子地块
我目前有一个13列的列表,我正在绘制分布图。我想创建一系列的子情节,使情节占用较少的空间,但我有一个困难的时间这样做在一个循环 示例数据帧:Python 如何为seaborn histplot绘制不均匀数量的子地块,python,pandas,seaborn,subplot,Python,Pandas,Seaborn,Subplot,我目前有一个13列的列表,我正在绘制分布图。我想创建一系列的子情节,使情节占用较少的空间,但我有一个困难的时间这样做在一个循环 示例数据帧: import pandas as pd import numpy as np data = {'identifier': ['A', 'B', 'C', 'D'], 'treatment': ['untreated', 'treated', 'untreated', 'treated'], 'treatment_timing': ['pr
import pandas as pd
import numpy as np
data = {'identifier': ['A', 'B', 'C', 'D'],
'treatment': ['untreated', 'treated', 'untreated', 'treated'], 'treatment_timing': ['pre', 'pre', 'post', 'post'],
'subject_A': [1.3, 0.0, 0.5, 1.6], 'subject_B': [2.0, 1.4, 0.0, 0.0], 'subject_C': [nan, 3.0, 2.0, 0.5],
'subject_D': [np.nan, np.nan, 1.0, 1.6], 'subject_E': [0, 0, 0, 0], 'subject_F': [1.0, 1.0, 0.4, 0.5]}
df = pd.DataFrame(data)
identifier treatment treatment_timing subject_A subject_B subject_C subject_D subject_E subject_F
0 A untreated pre 1.3 2.0 NaN NaN 0 1.0
1 B treated pre 0.0 1.4 3.0 NaN 0 1.0
2 C untreated post 0.5 0.0 2.0 1.0 0 0.4
3 D treated post 1.6 0.0 0.5 1.6 0 0.5
- 从主题A到主题M(共13个)
- 我目前正在做的是生成一个13行1列的布局,包含13个直方图。每个主题一个,分为3种颜色(前、后和缺失)
fig, axes = plt.subplots(3,5, sharex=True, figsize=(12,6))
for index, col in enumerate(COL_LIST):
sns.histplot(
df ,x=col, hue="time", multiple="dodge", bins=10, ax=axes[index,index % 3]
).set_title(col.replace("_", " "))
plt.tight_layout()
这肯定不行。但我不确定是否有一种简单的方法来定义轴,而不必复制和粘贴这条线13次,并手动定义轴坐标
使用DISPLAOT有些麻烦,因为COLU wrap错误会被清除
ValueError: Number of rows must be a positive integer, not 0
(我认为这是由于np.nan的存在)- 它将更易于使用,这是一个,而不是
。seaborn.histplot
- 探索使用
、行
和列
获得所需的行数和列数列换行
- 探索使用
- 必须堆叠
列,才能将数据帧转换为整齐的格式,这可以通过主题
堆叠
将熊猫作为pd导入
导入seaborn作为sns
#使用堆栈将数据帧转换为长格式
df_long=df.set_index(['identifier','treatment','treatment_timing']).stack().reset_index().rename(列={'level_3':'subject',0:'vals'})
#按主题分类
df_long=df_long.sort_值(“主题”).reset_索引(drop=True)
#显示(df_long.head())
标识符治疗时间受试者VAL
0未经治疗的预受试者\u A 1.3
1 D受试者术后治疗1.6
2 C未经治疗的受试者后0.5
3 B治疗前受试者_A 0.0
4 D治疗后受试者_B 0.0
#恶作剧
显示(数据=df_long,row='subject',col='treatment',x='vals',hue='treatment'u timing',bin=10)
本节介绍如何在轴对象之间循环并删除未使用的轴。对于您提供的受限信息,您只能说这些。