我有一个数据框,我想用它来构建一个散点图,其中不同的点有不同的颜色:
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))
如您所见,该列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
?
提前致谢
Smart猫小萌
相关分类