我正在尝试制作散点图,该图显示数据框中每个索引条目(公司)的不同标记以及不同的颜色,因为图中的条目太多,要么太近,要么太多,无法正确区分(颜色和标记在每个循环中循环,因此颜色和符号从 PSPPROJECT 开始重复)(图像中的示例:GODREJPROP 和 IL&FSENGG 具有相同的标记和颜色)。
简而言之,我希望标记以一种颜色显示 1 个周期,然后在标记的每个周期以不同的颜色显示,从而确保轻松识别图中的点。请针对此问题提出任何修复或替代方案或改进此代码的任何方法。
我也想借此机会征求建议,让我的图例条目在足够的栏中塑造自己,以确保它不会太长。
我在这里上传了一张情节图片:
到目前为止,我已经想出了以下代码,代码中的“i”是一个数据框,“j”是一个字符串,“EQW”是一个包含两种类型的多个元素的元组列表。
for i,j in EQW:
k = i.agg(["mean", "std"]).T
k.columns = ["Return", "Risk"]
plt.figure(figsize = (12,8))
mark=itertools.cycle(("o","v","^","<",">","1","2","3","4","8","s","p","P","*","h","H","+","x","X","d"))
for l in k.index:
plt.scatter(x = k.loc[l,"Risk"], y = k.loc[l,"Return"], s = 75,label=l,marker =next(mark))
if len(k.index)<20:
plt.legend(bbox_to_anchor=(1.0,1.0))
elif len(k.index)>30 and len(k.index)<50:
plt.legend(bbox_to_anchor=(1.0,1.0),ncol=2)
else:
plt.legend(bbox_to_anchor=(1.0,1.0),ncol=3)
plt.xlabel("Risk(std)", fontsize = 15)
plt.ylabel("Return", fontsize = 15)
plt.title("Risk/Return for {} with Equally Weighted Portfolio".format(j), fontsize = 20)
plt.show()
明月笑刀无情
相关分类