我想在x轴上制作一个盒子图,x变量在不同的范围内分裂,例如: 0-5,5-10,10+。是否有一种方法可以在Matplotlib/Seaborn中有效地完成这一任务,而不必基于子设置创建不均匀的新列?因此,对于a下面的示例数据集,我想要一个带有3个框0-5 (1a4j,1a6u,1ahc),5-10 (1brq,1bya),10+ (1bya,1bbs)的盒图( rot_bonds变量)。
structure rot_bonds no_atoms logP
0 1a4j 3 37 2.46
1 1a6u 4 17 1.58
2 1ahc 0 10 -0.06
3 1bbs 20 51 4.81
4 1brq 5 21 5.51
5 1bya 10 45 -9.75提前谢谢。
发布于 2020-09-07 10:36:35
通过海运,您可以使用切片作为x轴,例如'no_atoms'作为盒图的y-值:
from matplotlib import pyplot as plt
from io import StringIO
import pandas as pd
import seaborn as sns
s = ''' structure rot_bonds no_atoms logP
0 1a4j 3 37 2.46
1 1a6u 4 17 1.58
2 1ahc 0 10 -0.06
3 1bbs 20 51 4.81
4 1brq 5 21 5.51
5 1bya 10 45 -9.75'''
df = pd.read_csv(StringIO(s), delim_whitespace=True)
sns.boxplot(x=pd.cut(df['rot_bonds'], [0, 5, 10, 1000]), y='no_atoms', data=df)
plt.show()

https://stackoverflow.com/questions/63775414
复制相似问题