2017-04-04 56 views
0

当我尝试使用matplotlib来绘制代码时,我看到一个没有任何绘图的空图。我附上了代码和空白图。请让我知道我缺少的东西。谢谢!使用matplotlib做一个散点图

empty window with no plot

from datetime import datetime 
start_time = datetime.now() 
print(start_time) 

import pandas as pd 
import numpy as np 

file1 = 'fn_data.csv' 
import matplotlib.pyplot as plt 
#import pylab 

# Read the .txt file into a dataframe 
data = pd.read_csv(file1, encoding = "ISO-8859-1", header=0, delimiter=',') 
rating=data.iloc[:,0] 
chef=data.iloc[:,3] 
print(rating) 

mydict={} 
i = 0 
for item in chef: 
    if(i>0 and item in mydict): 
     continue 
    else: 
     i = i+1 
     mydict[item] = i 

chef_codes=[] 
for item in chef: 
    chef_codes.append(mydict[item]) 

print(chef_codes) 
chef_codes_new=np.array(chef_codes) 
rating_new=np.array(rating) 
print(type(chef_codes_new),type(rating_new)) 
print(np.max(chef_codes_new),np.max(rating_new)) 
plt.plot(kind='scatter',x=chef_codes_new,y=rating_new, marker='o', ms = 10, alpha=1, color='b') 
plt.axis([0, 1000, 0, 5]) 
plt.show() 
plt.savefig("fig1.png") 


end_time = datetime.now() 
print(end_time) 
+0

尝试在显示之前保存图形,出于某种原因,这对我有用。虽然我无法解释为什么。 –

+0

尝试在放映前移动savefig,结果相同。最大值是908,5.0,我知道没有太多南方的线索。 – Sri

+0

数字窗口是空的,保存的.png也是空的 – Sri

回答

0
def scatterPlot(X,Y): 
    ids= ['green' if y == 0 else 'red' for y in Y] 
    plt.scatter(X[:,0], X[:,1], color=ids) 
    plt.title("Scatter Plot") 
    return 

scatterPlot(x,y) 

其唯一的scatter plot一个例子希望它可以帮助你从你的问题了。

+0

当我将代码更改为plt.scatter而不是plt.plot时它的工作。感谢您的建议。但是,我仍然不明白为什么plt.plot不起作用 – Sri

0

如果plt.scatter有效,plt.plot也可以。问题是你已经混合了pandas.DataFrame.plot的语法和pyplot.plot的命令。

所以,与其

plt.plot(kind='scatter',x=chef_codes_new,y=rating_new, marker='o', ms = 10, alpha=1, color='b') 

你需要

plt.plot(chef_codes_new,rating_new, marker='o', ms = 10, alpha=1, color='b') 

语法是plt.plot(x,y, *args, **kwargs),你不能在一个pyplot阴谋使用kind="scatter"。如果您想要散点图,请使用plt.scatter

+0

谢谢!这工作。 – Sri