2016-09-25 50 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

。谢谢。 –