<p>您可以在全息图中创建一个散射图,每个类别有不同的颜色,如下所示。它们都是优雅的一句话:</p>
<p><strong>1)</strong>只需在数据帧上使用<strong>.hvplot()</strong>即可为您完成此操作。在</p>
<pre><code>import hvplot
import hvplot.pandas
df.hvplot(kind='scatter', x='col1', y='col2', by='category_col')
# If you are using bokeh as a backend you can also just use 'color' parameter.
# I like this one more because it creates a hv.Scatter() instead of hv.NdOverlay()
# 'category_col' is here just an extra vdim, which is used for colors
df.hvplot(kind='scatter', x='col1', y='col2', color='category_col')
</code></pre>
<p><strong>2)</strong>通过创建<strong>n覆盖</strong>散点图,如下所示:</p>
^{pr2}$
<p><strong>3)</strong>或doppler的答案稍作调整,<strong>将“category_col”设置为额外的vdim</strong>,然后用于颜色:</p>
<pre><code>hv.Scatter(
data=df, kdims=['col1'], vdims=['col2', 'category_col'],
).opts(color='category_col', cmap=['blue', 'orange'])
</code></pre>
<p><strong>结果图:</strong>
<a href="https://i.stack.imgur.com/M0abb.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/M0abb.png" alt="holoviews hvplot scatter plot different color per category"/></a>
<br/>
如果要直接使用我的示例,则需要以下示例数据:</p>
<pre><code>import numpy as np
import pandas as pd
# create sample dataframe
df = pd.DataFrame({
'col1': np.random.normal(size=30),
'col2': np.random.normal(size=30),
'category_col': np.random.choice(['category_1', 'category_2'], size=30),
})
</code></pre>
<p><strong>作为额外的:</strong></p>
<p>我发现有趣的是,<strong>这个问题基本上有两种解决方案。<br/>
您可以创建高压散射()将分类列作为额外的vdim,提供颜色或2个单独的散点图,这些散点图由hv.N覆盖(). <br/>
<br/>
在后端高压散射()解决方案如下:</p>
<blockquote>
<p>:Scatter [col1] (col2,category_col)</p>
</blockquote>
<p><br/>
以及hv.N覆盖()后端如下所示:</p>
<blockquote>
<p>:NdOverlay [category_col] :Scatter [col1] (col2)</p>
</blockquote>