为了账号安全,请及时绑定邮箱和手机立即绑定

尝试创建一个散点图,其中循环标记和颜色,以便在标记的 1 个循环完成后更改颜色

尝试创建一个散点图,其中循环标记和颜色,以便在标记的 1 个循环完成后更改颜色

慕田峪4524236 2023-03-16 17:25:09
我正在尝试制作散点图,该图显示数据框中每个索引条目(公司)的不同标记以及不同的颜色,因为图中的条目太多,要么太近,要么太多,无法正确区分(颜色和标记在每个循环中循环,因此颜色和符号从 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()
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

您可以遍历颜色和标记,并使用//颜色和%标记为所有标记保留一种颜色,而不是为所有标记使用第二种颜色,依此类推:


len_markers = 3

len_colors = 2

for i in range(len_markers*len_colors):

    print(i, i // len_markers, i % len_markers)


# 0 0 0

# 1 0 1

# 2 0 2

# 3 1 0

# 4 1 1

# 5 1 2

一个简单的例子:


import matplotlib.pyplot as plt

marker_list = ['v', '^', '<', '>']

color_list = ['r', 'b', 'g', 'y', 'm']


x = np.random.random((len(marker_list) * len(color_list), 2))


plt.figure()

for i, xx in enumerate(x):

    plt.plot(*xx, color=color_list[i // len(marker_list)], ls='',

             marker=marker_list[i % len(marker_list)], label=str(i))


plt.legend(ncol=2)

//img1.sycdn.imooc.com//6412e1120001f68805410409.jpg

查看完整回答
反对 回复 2023-03-16
  • 1 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信