2017-04-04 57 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