У меня есть фрейм данных, который я хотел бы использовать для построения диаграммы рассеяния, в которой разные точки имеют разные цвета:
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
dat=pd.DataFrame(np.random.rand(20, 2), columns=['x','y'])
dat['c']=np.random.randint(0,100,20)
dat['c_norm']=(dat['c']-dat['c'].min())/(dat['c'].max()-dat['c'].min())
dat['group']=np.append(np.repeat('high',10), np.repeat('low',10))
AsВы можете видеть, что столбец c_norm
показывает, что столбец c
нормализован между 0 и 1. Я хотел бы показать непрерывную легенду, цветовой диапазон которой отражает нормализованные значения, но помеченный с использованием исходных значений c
в качестве метки,Скажем, минимум (1
), максимум (86
) и медиана (49
). Я также хочу иметь разные маркеры в зависимости от group
.
До сих пор я был в состоянии сделать это:
fig = plt.figure(figsize = (8,8))
ax = fig.add_subplot(1,1,1)
for row in dat.index:
if(dat.loc[row,'group']=='low'):
i_marker='.'
else:
i_marker='x'
ax.scatter(
x=dat.loc[row,'x'],
y=dat.loc[row,'y'],
s=50, alpha=0.5,
marker=i_marker
)
ax.legend(dat['c_norm'], loc='center right', bbox_to_anchor=(1.5, 0.5), ncol=1)
Вопросы:
- Как создать непрерывную легенду на основе значений? - Как адаптировать свои галочки для отображения оригинальных галочек в c
, или, по крайней мере, min
, max
и mean
или median
?
Заранее спасибо