Как найти ограничения по цвету для качественных цветовых карт в Matplotlib?

#python #matplotlib #colormap

Вопрос:

У меня есть следующий код, который генерирует точечную диаграмму:

 plt.scatter(df['column_A'], y= df['column_B'], 
            alpha = .6, c = df['column_C'], cmap = 'Accent')
 

Он генерирует эту диаграмму, на которой точки окрашены на основе значений из «column_C»

Я использую качественную цветовую карту в cmap, которая автоматически создает интервалы на column_C и соответствующим образом окрашивает точки. Я могу визуально сказать, что серая группа колеблется от примерно 10 до максимума в данных (около 12), но я хотел бы получить доступ к точным цифрам. Есть ли способ сделать это?

Большое спасибо

Ответ №1:

По умолчанию цвета варьируются от наименьших до наибольших значений column_C . Для цветовой карты с N цветами будут N сегменты, таким образом N 1 , границы, с помощью которых можно вычислить np.linspace() .

Вот несколько примеров кода. Добавляются как цветовая панель с галочками по умолчанию, так и панель с галочками на границах цветов.

 import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.DataFrame({'column_A': np.random.rand(100),
                   'column_B': np.random.rand(100),
                   'column_C': np.random.rand(100) * 20 - 8})
cmap = plt.get_cmap('Accent')
plt.scatter(df['column_A'], y=df['column_B'],
            alpha=.6, c=df['column_C'], cmap=cmap)
plt.colorbar()  # the default color bar
color_borders = np.linspace(df['column_C'].min(), df['column_C'].max(), cmap.N   1)
plt.colorbar(ticks=color_borders)  # ticks at the color borders
plt.show()
 

поиск цветовых границ в цветовой панели