<p>首先,为了产生颜色,您可以在数据帧中添加一个带颜色的列。然后这些颜色可以传递给<code>c</code>的关键字参数<code>scatter</code>。在</p>
<p>创建带有不易访问的条目的图例的常见解决方案是<a href="http://matplotlib.org/users/legend_guide.html#creating-artists-specifically-for-adding-to-the-legend-aka-proxy-artists" rel="nofollow noreferrer">generate proxy artists</a>。在本例中,我们将创建一组不同颜色的标记,并将其提供给<code>handles</code>参数的<code>legend</code>。图例标签就是数据帧中的最后一个姓。在</p>
<pre><code>import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.lines
raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'last_name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze'],
'female': [0, 1, 1, 0, 1],
'age': [42, 52, 36, 24, 73],
'preTestScore': [4, 24, 31, 2, 3],
'postTestScore': [25, 94, 57, 62, 70],
'colors' : ["r", "g", "b", "k", "cyan"]} # add a column for colors
df = pd.DataFrame(raw_data,
columns = ['first_name', 'last_name', 'age', 'female', 'preTestScore', 'postTestScore', "colors"])
#supply colors as argument for c
plt.scatter(df.preTestScore, df.postTestScore, s=df.age, c=df.colors)
# generate proxy artists for legend
handles = [matplotlib.lines.Line2D([],[], marker="o", color=c, linestyle="none") for c in df.colors.values]
# supply proxy artists to handles and last names to labels
plt.legend(handles=handles, labels=list(df.last_name.values),
loc='upper left', prop={'size':6}, bbox_to_anchor=(1,1),ncol=1, numpoints=1)
plt.subplots_adjust(right=0.8)
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/XNQHw.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/XNQHw.png" alt="enter image description here"/></a></p>