【发布时间】:2017-04-29 03:51:44
【问题描述】:
我想创建一个散点图,其中显示在 pandas 中相互映射的两列,第三列是大小,然后是基于标签的点的颜色(在下面的例子中,last_name)。
然后我想要一个图例,显示一个点作为颜色,然后是 last_name 值
每个姓氏应与不同的颜色相关联,图例显示,例如,绿点和米勒,红点和雅各布森等。
%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
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]}
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'female', 'preTestScore', 'postTestScore'])
plt.scatter(df.preTestScore, df.postTestScore, s=df.age, label=df.last_name)
plt.legend(loc='upper left', prop={'size':6}, bbox_to_anchor=(1,1),ncol=1)
这给了我这样的东西:
我完全不知道如何获得颜色(理想情况下,我喜欢使用调色板)或如何让图例显示姓氏和点
任何帮助将不胜感激..谢谢!
注意 - 我从这里 Chris Albon 举个例子。
【问题讨论】:
-
您可以使用颜色列表为每个点分配不同的颜色:
['r', 'b', 'g', 'k', 'y']。我不确定如何安排图例,以便每个图例都有自己的行,但不要将标签传递给系列。您可以循环并调用 scatterplot 5 次不同的时间,这将为您提供所需的绘图。 -
这里其实也有类似的问题:stackoverflow.com/questions/16614558/…
标签: python pandas matplotlib visualization scatter-plot