传递给 scatter 的数据的形状不正确,需要移动索引,因为箱线图索引从 1 开始。
这是一个可行的解决方案:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
names = ['a','b','c','d','e','f']
df = pd.DataFrame(np.random.rand(6,6), columns=names)
display(df)
plt.boxplot(df, labels=names)
plt.show()
df2 = df.copy()
df2.columns = range(1, len(df2.columns)+1)
df2 = df2.unstack().reset_index(level=0)
plt.scatter(*df2.values.T)
plt.show()
plt.boxplot(df, labels=names)
plt.scatter(*df2.values.T)
plt.show()
需要给scatter提供什么:
[1., 1., 1., 1., 1., 1., 2., 2., 2., 2., 2., 2., 3., 3., 3., 3., 3.,
3., 4., 4., 4., 4., 4., 4., 5., 5., 5., 5., 5., 5., 6., 6., 6., 6.,
6., 6.]
和
[0.40196123, 0.24802927, 0.3152357 , 0.76739054, 0.06847434,
0.30173798, 0.30350823, 0.36324843, 0.35928768, 0.69194326,
0.61586685, 0.74039024, 0.56971769, 0.37970524, 0.67049866,
0.82031296, 0.15917911, 0.58760412, 0.02660848, 0.67014213,
0.46027398, 0.39161172, 0.01191327, 0.48197714, 0.79882359,
0.84189102, 0.10873758, 0.56858526, 0.48169526, 0.08860958,
0.43500853, 0.26380151, 0.14911615, 0.47846386, 0.25583401,
0.04949216]