【发布时间】:2021-08-31 20:40:48
【问题描述】:
假设我有以下数据框
import pandas as pd
import seaborn as sns
import numpy as np
d = {'val': [1, 2,3,4], 'a': [1, 1, 2, 2]}
d2 = {'val': [1, 2], 'a': [1, 2]}
df = pd.DataFrame(data=d)
df2 = pd.DataFrame(data=d2)
这将为我提供两个如下所示的数据框:
df =
val a
0 1 1
1 2 1
2 3 2
3 4 2
和
df2 =
val a
0 1 1
1 2 2
现在我想根据 df 中的 val 和 a 的值创建一个箱线图,即固定一个值 a,即 1;然后我有两个不同的值 val:1 和 2;然后根据值 {1,2} 在 x=1 创建一个框;然后转到 a=2:基于 a=2,我们有两个值 val={3,4},因此根据值 {3,4} 在 x=2 创建一个框;
然后我想简单地根据 df2 画一条线,其中 a 再次是我的 x 轴,val 是我的 y 轴;我这样做的方式如下
ax = df.boxplot(column=['val'], by = ['a'],meanline=True, showmeans=True, showcaps=True,showbox=True)
sns.pointplot(x='a', y='val', data=df2, ax=ax)
问题是 a=1 的框在 a=2 处移动,而 a=2 的框消失了;如果我的代码有错误或者是错误,我会感到困惑;
如果我只是添加箱线图,一切都很好,所以如果我这样做:
ax = df.boxplot(column=['val'], by = ['a'],meanline=True, showmeans=True, showcaps=True,showbox=True)
盒子在正确的位置,但是一旦我添加了点图,事情似乎不再起作用了;
有人知道该怎么做吗?
【问题讨论】: