亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試創建一個散點圖,其中循環標記和顏色,以便在標記的 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)

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

查看完整回答
反對 回復 2023-03-16
  • 1 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號