2016-12-04 101 views
0

我想繪製一個數據集的類別,使用幾何形狀,如圓形,三角形和方形表示類別1,顏色表示類別2該輸出將具有幾何形狀和顏色,並且圖例的不同組合將單獨列出的類別的屬性即:熊貓散點圖:不同顏色和形狀組合的分類圖

圓=一個
三角形= b
平方= C

紅色= I
green = II
blue = III

尋找解決方案我發現下面的帖子只會給出具有一種特定顏色的特定幾何形狀的解決方案。

我試圖從帖子中的一個,但沒有成功,一起想出來的代碼。

import matplotlib.pyplot as plt 
import numpy as np 
import pandas as pd 

np.random.seed(1983) 
num = 10 
x, y = np.random.random((2, num)) 
cat1 = np.random.choice(['a', 'b', 'c'], num) 
cat2 = np.random.choice(['I', 'II', 'III'], num) 
df = pd.DataFrame(dict(x=x, y=y, cat1=cat1, cat2=cat2)) 

groups = df.groupby(['cat1', 'cat2']) 

fig, ax = plt.subplots() 
for name, group in groups: 
ax.plot(group.x, group.y, marker='o', linestyle='', ms=12, label=name) 
ax.legend() 

plt.show() 

回答

1

你可以試試這個代碼塊

import matplotlib.pyplot as plt 
import numpy as np 
import pandas as pd 

#Create mapping dictionary that you want 
marker_dict = {'a':'o','b':'^','c':'s'} 
color_dict = {'I':'red', 'II':'green', 'III':'blue'} 

np.random.seed(1983) 
num = 10 
x, y = np.random.random((2, num)) 
cat1 = np.random.choice(['a', 'b', 'c'], num) 
cat2 = np.random.choice(['I', 'II', 'III'], num) 
df = pd.DataFrame(dict(x=x, y=y, cat1=cat1, cat2=cat2)) 

groups = df.groupby(['cat1', 'cat2']) 

fig, ax = plt.subplots() 
ax.margins(0.05) 
for name, group in groups: 
    marker = marker_dict[name[0]] 
    color = color_dict[name[1]] 
    ax.plot(group.x, group.y, marker=marker, linestyle='', ms=12, label=name,color=color) 
ax.legend() 

plt.show() 

希望它能幫助。

+0

如果滿足您的要求,您能否至少將答案標記爲正確? –

+0

感謝您的快速幫助。你的回答非常有幫助。圖例表示的問題仍然存在。 – Anjo