Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫箱线图,按每个子批次中的不同ylim分组_Python_Pandas_Matplotlib - Fatal编程技术网

Python 熊猫箱线图,按每个子批次中的不同ylim分组

Python 熊猫箱线图,按每个子批次中的不同ylim分组,python,pandas,matplotlib,Python,Pandas,Matplotlib,我有一个数据帧,我想将其绘制为: >>> X = pd.DataFrame(np.random.normal(0, 1, (100, 3))) >>> X['NCP'] = np.random.randint(0, 5, 100) >>> X[X['NCP'] == 0] += 100 >>> X.groupby('NCP').boxplot() 结果就是我想要的,但是所有的子地块都有相同的ylim。这使得不可能正确地可视

我有一个数据帧,我想将其绘制为:

>>> X = pd.DataFrame(np.random.normal(0, 1, (100, 3)))
>>> X['NCP'] = np.random.randint(0, 5, 100)
>>> X[X['NCP'] == 0] += 100
>>> X.groupby('NCP').boxplot()

结果就是我想要的,但是所有的子地块都有相同的ylim。这使得不可能正确地可视化结果。如何为每个子批次设置不同的ylim?

您要求的是为每个轴分别设置y轴。我认为应该是ax.set_ylim([a,b])。但每次我为每个轴运行它时,它都会为所有轴更新

因为我不知道如何直接回答你的问题,所以我提供了一个解决方案

X = pd.DataFrame(np.random.normal(0, 1, (100, 3)))
X['NCP'] = np.random.randint(0, 5, 100)
X[X['NCP'] == 0] += 100

groups = X.groupby('NCP')

print groups.groups.keys()

# This gets a number of subplots equal to the number of groups in a single 
# column.  you can adjust this yourself if you need.
fig, axes = plt.subplots(len(groups.groups), 1, figsize=[10, 12])

# Loop through each group and plot boxplot to appropriate axis
for i, k in enumerate(groups.groups.keys()):
    group = groups.get_group(k)
    group.boxplot(ax=axes[i], return_type='axes')

它可以工作。我认为这是一个bug,因为我确信我能够用我不工作的代码完成它。