При создании следующего графика я не могу удалить белую рамку, которая появляется вокруг каждого графика (примечание: цвета были изменены, чтобы сделать проблему более заметной).

Есть есть ли способ устранить этот нежелательный эффект?
Пока пытаюсь
Я искал решения, но не нашел ничего похожего работать. Я подозреваю, что Сиборн делает что-то раздражающее. Вот ссылки, которые я нашел на SO, на случай, если люди захотят узнать, где я смотрел.
- Удаление белой рамки вокруг изображения при использовании matplotlib без сохранения изображения
- Как удалить белые линии при построении нескольких подграфиков в Matplotlib?
- Удалить белую рамку при использовании подзаголовка и imshow в Python (Matplotlib )
- Устраните пробелы между подграфиками на рисунке matplotlib
Код для воспроизведения фигуры (MRE)
Это может растянуть " минимальная» часть MRE, но вот код, который создает приведенный выше рисунок.
## imports
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
##produce dataframes
results = pd.DataFrame(
{'cat_1': {0: -0.03200000000000003,
1: -0.040000000000000036,
2: -0.030400000000000205,
3: -0.024800000000000155,
4: 2.2880000000000003},
'cat_2': {0: 0.13839999999999986,
1: 0.14880000000000004,
2: 0.14880000000000004,
3: 0.13759999999999994,
4: 7.3991999999999996},
'cat_3': {0: 0.1719999999999997,
1: 0.15039999999999987,
2: 0.1823999999999999,
3: 0.16559999999999953,
4: 12.720000000000002},
'cat_4': {0: 0.2967999999999993,
1: 0.6991999999999994,
2: 0.735199999999999,
3: 0.7607999999999997,
4: 23.2432},
'label': {0: 'label_1',
1: 'label_2',
2: 'label_3',
3: 'label_4',
4: 'label_5'}}
)
relative_results = pd.DataFrame(
{'cat_1': {0: -2.123424021234242,
1: -2.6542800265428026,
2: -2.0172528201725415,
3: -1.6456536164565463,
4: 151.82481751824818},
'cat_2': {0: 6.275505577219545,
1: 6.747075360478827,
2: 6.747075360478827,
3: 6.2392309785072975,
4: 335.5037634896164},
'cat_3': {0: 6.359535606004574,
1: 5.56089625083191,
2: 6.744065665902532,
3: 6.122901722990442,
4: 470.30984249057167},
'cat_4': {0: 5.825318940137375,
1: 13.723258096172705,
2: 14.429833169774268,
3: 14.932286555446508,
4: 456.1962708537782},
'label': {0: 'label_1',
1: 'label_2',
2: 'label_3',
3: 'label_4',
4: 'label_5'}}
)
baseline = pd.Series(
{'cat_1': 1.507,
'cat_2': 2.2054,
'cat_3': 2.7046,
'cat_4': 5.095,
'label': 'label_0'}
)
## functions to manipulate second y-axis
def get_new_bounds(ax1, baseline, col):
a,b = ax1.get_ybound()
return a*baseline[col]/100, b*baseline[col]/100
def get_new_ticks(ax1, baseline, col):
ticks = ax1.get_yticks()
return ticks*baseline[col] / 100
## custom settings
rc={"axes.facecolor":"#b3edff",
"figure.facecolor":"#b3edff",
# "grid.color":"#ffbb33",
"grid.color":"#202020",
"grid.linewidth":0.3,
"lines.linewidth":0.7,
"lines.markersize":20,
"font.family":"Calibri"}
sns.set_theme(font_scale = 1.25, rc = rc)
## plot figure
cols = [f"cat_{i}" for i in range(1,5)]
fig, axs = plt.subplots(2,2,
figsize = (20,10),
sharex = False,
sharey=True)
for ax, col in zip(axs.ravel(), cols):
sns.pointplot(
data = relative_results,
x = "label",
y = col,
ax = ax,
markersize=7)
ax.set_xlabel("")
ax.set_ylabel("")
ax.set_title(col)
ax.axhline(0, ls='--', color = 'k')
# note: getting rid of the second y-axis doesn't solve the problem
for i, ax, col in zip(range(4), axs.ravel(), cols):
if i >= 2:
ax.set_xticklabels([])
ax2 = ax.twinx()
# if i%2 == 1:
# ax2.set_ylabel("(ms) change in latency")
ax2.set_yticks(get_new_ticks(ax, baseline, col))
ax2.set_ybound(*get_new_bounds(ax, baseline, col))
ax2.grid(False)
fig.text(-1.3, 1, '(%) change',
ha='center', va='center', rotation='vertical', transform=ax.transAxes, fontsize = "xx-large")
fig.text(1.15, 1, '(unit) change',
ha='center', va='center', rotation='vertical', transform=ax.transAxes, fontsize = "xx-large")
fig.supxlabel("x-axis label", fontsize = "xx-large")
fig.suptitle("Title", fontsize = "xx-large")
plt.show()
Подробнее здесь: https://stackoverflow.com/questions/791 ... h-subplots