Python 沿x轴在所需距离处绘制seaborn箱线图
是否有必要沿x轴将Python 沿x轴在所需距离处绘制seaborn箱线图,python,pandas,seaborn,Python,Pandas,Seaborn,是否有必要沿x轴将seaborn箱线图放置在所需距离处 我有一个数据框 带索引分配的分层列索引,最大值,类型 学生姓名的行索引 +------------+----------+---------+----------+---------------+ |键入|作业|测验|作业|演示| ||最大100 |最大100 |最大100 |最大100| +------------+----------+---------+----------+---------------+ |作业| 1 | 2 |
seaborn
箱线图放置在所需距离处
我有一个数据框
带索引分配的分层列索引,最大值,类型
学生姓名的行索引
+------------+----------+---------+----------+---------------+
|键入|作业|测验|作业|演示|
||最大100 |最大100 |最大100 |最大100|
+------------+----------+---------+----------+---------------+
|作业| 1 | 2 | 3 | 4|
+------------+----------+---------+----------+---------------+
|学生1 | 88 | 98 | 100 | 85|
+------------+----------+---------+----------+---------------+
|学生2 | 96 | 79 | 100 | 97|
+------------+----------+---------+----------+---------------+
|学生3 | 87 | 79 | 72 | 78|
+------------+----------+---------+----------+---------------+
|学生4 | 87 | 84 | 90 | 85|
+------------+----------+---------+----------+---------------+
|学生5 | 73 | 91 | 76 | 90|
+------------+----------+---------+----------+---------------+
|学生6 | 70 | 75 | 98 | 82|
+------------+----------+---------+----------+---------------+
|学生7 | 85 | 71 | 73 | 75|
+------------+----------+---------+----------+---------------+
|学生8 | 76 | 81 | 94 | 86|
+------------+----------+---------+----------+---------------+
|学生9 | 97 | 80 | 95 | 88|
+------------+----------+---------+----------+---------------+
实际上,作业是字符串,更具描述性
我可以轻松地将数据帧输入seaborn,它将生成一个漂亮的方框图
sns.箱线图(df)
我真正想要的是把盒子分成不同的子地块(不难),但要按时间顺序适当地隔开
更清楚地说:
目前,sns.boxplot(df)
按时间顺序放置所有的方框图,这很好。
例如,我想在上面画一个子图,它只有测验框图,但是测验框图在x轴上水平排列,如果包括所有作业,它们将落在哪里
是否仍有将seaborn箱线图沿x轴放置在所需距离处
sns.boxplot(df['quick',x=[1,5,9,12])
不起作用,因为您无法覆盖x'值(但这些只是标签)。更新:似乎我错了,正如前面指出的,您可以通过巧妙地使用顺序
关键字来指定位置,但您似乎需要将数据格式从“宽”改为“长”格式
简而言之,答案是否定的,
seaborn.boxplot
没有指定x轴上boxplot位置的选项
如果您不太喜欢样式,或者可以手动指定样式,则可以使用pandas.DataFrame.boxplot
,它具有positions
属性
import matplotlib.pyplot as plt
import pandas as pd
import numpy.random as rnd # just to generate some data
data = pd.DataFrame(rnd.randn(10,4))
data.boxplot(positions=[1,5,6,10])
plt.grid('off')
这对于整数位置很酷,但对于浮动位置不实用。如何实现这一目标,有什么建议吗?
import numpy as np
import pandas as pd
import seaborn as sns
df = pd.DataFrame(dict(x=np.repeat([0, 3, 5, 6], 10),
y=np.random.randn(40)))
sns.boxplot(x="x", y="y", data=df, order=np.arange(7))