Расстояние между двумя полями определяется пределами оси x.Для постоянных расстояний в блоках данных между блоками то, что делает их более или менее разнесенными друг от друга, является частью расстояния этих блоков данных по сравнению с общим пространством данных, показанным на оси.Например, в случае с морским порогом первая коробка находится в точке x = 0, а вторая в точке x = 1.Разница составляет 1 единицу.Таким образом, максимальное расстояние между двумя коробочными диаграммами достигается установкой пределов оси x на эти точные пределы:
ax.set_xlim(0, 1)
Конечно, это сократит половину каждой ячейки.

Таким образом, более полезным значением будет ax.set_xlim(0-val, 1+val)
, где val
находится где-то в диапазоне ширины блоков.
Нужно отметить, что панды используют разные юниты.Первый блок в х = 1, второй в х = 2.Следовательно, нужно что-то вроде ax.set_xlim(1-val, 2+val)
.
. Следующее добавит ползунок на график, чтобы увидеть влияние различных значений.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
dict_a = {'value':[1,2,3,7,8,9],'name':['Group_a']*3+['Group_b']*3}
dataframe = pd.DataFrame(dict_a)
fig, (ax, ax2, ax3) = plt.subplots(nrows=3,
gridspec_kw=dict(height_ratios=[4,4,1], hspace=1))
sns.boxplot( y="value" , x="name" , data=dataframe, width=0.1, ax=ax)
dataframe.boxplot("value", by = "name", ax=ax2)
from matplotlib.widgets import Slider
slider = Slider(ax3, "", valmin=0, valmax=3)
def update(val):
ax.set_xlim(-val, 1+val)
ax2.set_xlim(1-val, 2+val)
slider.on_changed(update)
plt.show()
