我想创建一个散点图,显示pandas中的两个列相互映射,第三列是大小,然后是基于标签的点的颜色(在下面的例子中,是姓氏)。在
然后我想要一个图例,显示一个点的颜色,然后最后的名称值
每个姓氏应与不同的颜色相关联,图例显示,例如,绿点和米勒,红点和雅各布森等
%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。在
调用
scatter
将只生成一个图例项。如果要为每个点指定图例项,最简单的方法是为每个点调用绘图方法。这不应该是一个性能方面的问题,因为您不希望在您的图例中有数千个条目。我将使用plot
,因为它对一个点很好,但是如果你需要更漂亮的效果,你也可以使用scatter
。在我还不知道怎么把传说中的圆点做成同样大小,我不确定这是否是你想要的。我认为不同的尺寸看起来不错,可以帮助定位在情节中的人。在
或者,您可以只使用一个对
scatter
的调用,然后检查返回的PathCollection
的属性并手工构建图例,但我认为我的方法更简洁。在首先,为了产生颜色,您可以在数据帧中添加一个带颜色的列。然后这些颜色可以传递给
c
的关键字参数scatter
。在创建带有不易访问的条目的图例的常见解决方案是generate proxy artists。在本例中,我们将创建一组不同颜色的标记,并将其提供给
handles
参数的legend
。图例标签就是数据帧中的最后一个姓。在相关问题 更多 >
编程相关推荐