按色调排列的散点图

Scatter plot order by hue

有没有办法设置参数来对散点图中的色调值进行排序? 例如我只想显示 3 个值和 3 种不同的颜色。在下面的图表中,seaborn 自动生成 6 个值并分配了一种颜色。 我正在尝试做这样的事情:如果 X > 0.06 red,介于 0.06 和 0.08 yellow 之间以及高于 red 的所有内容。我阅读了文档,但仍然无法弄清楚如何实现这一点

我的代码:

plt.figure(figsize=(12,8))
sns.scatterplot(x='lng_dms_to_lng_dd',y='lat_dms_to_lat_dd',data=store_avg,hue='MOP_GC_PCT', size="MOP_GC_PCT",sizes=(20, 200))

您可以尝试为您的条件创建一个带有新标签的新列,并绘制带有色调的图表作为新列。

# create new column and label with defined conditions
store_avg.loc[(store_avg['MOP_GC_PCT'] >= 0.09), 'MOP_GC_PCT_bins'] = 'more than 0.08'
store_avg.loc[(store_avg['MOP_GC_PCT'] >= 0.06) & (store_avg['col1'] <= 0.08), 'MOP_GC_PCT_bins'] = 'between 0.06 and 0.08'
store_avg.loc[(store_avg['MOP_GC_PCT'] <= 0.05), 'MOP_GC_PCT_bins'] = 'less than 0.06'

# your plot code
plt.figure(figsize=(12,8))
sns.scatterplot(x='lng_dms_to_lng_dd',y='lat_dms_to_lat_dd',data=store_avg,hue='MOP_GC_PCT_bins', size="MOP_GC_PCT",sizes=(20, 200))

您还可以定义自己的调色板。

# define palette
palette = {'more than 0.08':'red',
           'between 0.06 and 0.08':'yellow', 
           'less than 0.06':'red'}

# plot with custom palette
sns.scatterplot(x='lng_dms_to_lng_dd',y='lat_dms_to_lat_dd',data=store_avg,hue='MOP_GC_PCT_bins', size="MOP_GC_PCT",sizes=(20, 200), palette=palette)