Удаление легенды из графика параллельных координат mpl?

У меня есть параллельный график координат с большим количеством точек данных, поэтому я пытаюсь использовать непрерывную цветную полосу для представления этого, что, я думаю, я разработал. Однако мне не удалось удалить ключ по умолчанию, который вставляется при создании графика, который очень длинный и затрудняет чтение. Есть ли способ удалить эту таблицу, чтобы график было легче читать?

Это код, который я сейчас использую для создания графика параллельных координат:

parallel_coordinates(data[[' male_le',' 
female_le','diet','activity','obese_perc','median_income']],'median_income',colormap = 'rainbow', 
alpha = 0.5)

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = mpl.cm.rainbow
bounds = [0.00,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N,)
plt.colorbar(mpl.cm.ScalarMappable(norm = norm, cmap=cmap),cax = ax, orientation = 'horizontal', 
label = 'normalised median income', alpha = 0.5)

plt.show()

Текущий выход:

Сюжет трудно читается с текущей легендой

Я хочу, чтобы моя легенда была представлена ​​​​в виде цветной полосы, например:

Цветная полоса, которую я хочу использовать в качестве своей

Любая помощь будет принята с благодарностью. Спасибо.


person hboykett    schedule 15.05.2021    source источник


Ответы (1)


Вы можете использовать ax.legend_.remove() для удаления легенды.

Параметр cax для plt.colorbar указывает подграфик, в который нужно поместить цветовую полосу. Если вы пропустите его, matplotlib создаст новый подзаголовок, украв пространство из текущего подзаголовка (подзаголовки часто упоминаются как ax в matplotlib). Таким образом, отсутствие cax (добавление ax=ax не обязательно, так как здесь ax является текущим подзаголовком) создаст желаемую цветовую полосу.

В приведенном ниже коде используется набор данных пингвинов Seaborn для создания отдельного примера.

import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns
import numpy as np
from pandas.plotting import parallel_coordinates

penguins = sns.load_dataset('penguins')

fig, ax = plt.subplots(figsize=(10, 4))
cmap = plt.get_cmap('rainbow')
bounds = np.arange(penguins['body_mass_g'].min(), penguins['body_mass_g'].max() + 200, 200)
norm = mpl.colors.BoundaryNorm(bounds, 256)

penguins = penguins.dropna(subset=['body_mass_g'])
parallel_coordinates(penguins[['bill_length_mm', 'bill_depth_mm', 'flipper_length_mm', 'body_mass_g']],
                     'body_mass_g', colormap=cmap, alpha=0.5, ax=ax)
ax.legend_.remove()
plt.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),
             ax=ax, orientation='horizontal', label='body mass', alpha=0.5)
plt.show()

parallel_coordinates без легенды

person JohanC    schedule 15.05.2021