擅长:python、mysql、java
<p>首先,我假设您想要一个“离散”颜色映射,所以一种方法是:</p>
<pre><code>n_cat = len(_categories)
cmap = plt.get_cmap('viridis', n_cat)
</code></pre>
<p>这是一个方便的函数,用于获取<a href="https://matplotlib.org/3.3.3/api/_as_gen/matplotlib.colors.ListedColormap.html?highlight=listedcolormap#matplotlib.colors.ListedColormap" rel="nofollow noreferrer">ListedColormap</a>,即从默认颜色映射“viridis”中采样的每个类别的颜色列表。接下来,只需将该颜色贴图传递到散点图,应用颜色条,然后相应地设置刻度:</p>
<pre><code>plt.scatter(df.VarX, df.VarY, c= df.Category.map(colorMap), cmap=cmap)
cbar = plt.colorbar()
tick_locs = (numpy.arange(n_cat) + 0.5)*(n_cat-1)/n_cat
cbar.set_ticks(tick_locs)
cbar.set_ticklabels(_categories)
</code></pre>
<p><em>注意:这个答案深受启发<a href="https://stackoverflow.com/a/50314773/565489">from this answer</a></em></p>