2016-09-25 84 views
1

我想創建一個python csv文件散點圖,其中包含4列x,y,TL,L。我應該繪製xy,並根據我在下面的代碼中獲得的TL列中的class ID更改標記的顏色。如何根據列變量更改標記的形狀?

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

df=pd.read_csv('knnDataSet.csv') 
df.columns=['SN','x','y','TL','L'] 

color=['red','green','blue'] 

groups = df.groupby('TL') 

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() 

另外,我需要改變這取決於該標記是否已在L列或沒有標籤的形狀,但我不知道如何更新我的代碼,以適應這一要求。

這裏是鏈接爲knnDataSet.csv文件: knnDataSet.csv

+0

這裏是鏈接的文件:這應該是足夠https://www.dropbox.com/s/d9fzjs1pkmhyzqw/knnDataSet.csv?dl=0 –

回答

2

你可能想是這樣的:

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

df=pd.read_csv('knnDataSet.csv') 
df.columns=['SN','x','y','TL','L'] 
color=['red','green','blue'] 

groups = df.groupby('TL') 

fig, ax = plt.subplots(figsize=(11,8)) 

for name, group in groups: 
    for x in group.values: 
     if np.isnan(x[4]): 
      ax.plot(x[1], x[2], marker='x', linestyle='', ms=12) 
     else: 
      ax.plot(x[1], x[2], marker='o', linestyle='', ms=12)      

#ax.legend() 
plt.show() 

如果的L列的標籤是定義則該標記會X
如果L列中的標籤定義爲那麼標記將是O

輸出: enter image description here

+0

。謝謝。 –