2013-06-23 90 views
0

我需要繪製兩組每個100個點。 第一組點沿Y軸排列,下一組點距離第一組點較遠。Matplotlib繪圖

我的代碼如下:

import matplotlib.pyplot as plt 
data= numpy.array(network)  #network is a list of values 
datatwo= numpy.array(list)  #list is another list 
cmap= numpy.array([(1,0,0),(0,1,0)]) 
uniqdata, idx=numpy.unique(data, return_inverse=True) 
uniqdata, idx=numpy.unique(datatwo, return_inverse=True) 

N=len(data) 
M=len(datatwo) 
fig, ax=plt.subplots() 
plt.scatter(numpy.zeros(N), numpy.arange(1,N+1), s=50, c=cmap[idx]) 
plt.scatter(numpy.ones(M), numpy.arange(1,M+1), s=50, c=cmap[idx]) 
plt.grid() 
plt.show() 

我的問題是,這兩個名單,網絡和列表,有不同的價值觀,但解釋的圖形相同的一組點兩倍。我需要有兩組不同的點,分別用於網絡和列表。

代碼有什麼問題? 謝謝

+0

小評論'matplotlib.pyplot在plt'應該是'as'不'at' – Greg

+5

嗯,首先,你是不是使用'data'或'datatwo'你的情節呼籲。你只是繪製它們的長度(即,如果'數據'的長度爲3,則將[1,2,3]繪製爲y值,而不管數據的實際值是多少)。另外,您在創建後立即覆蓋'idx'。 – BrenBarn

+0

你不應該使用'list'命名一個變量,但可能無法解決你的問題。 –

回答

0

這是一段代碼,它將繪製包含在2個列表中的唯一值,第一組位於Y軸,第二組位於Y = 1,每個列表使用不同的顏色。我在猜測,因爲您使用的是np.unique,這兩個列表包含您不想多次繪製的重複值。

import numpy as np 
import matplotlib.pyplot as plt 
#################################################################################### 

network = [1,2,3,4,5,6,7,8,8,8,9,10] # Some lists of values 
ilist = [1,2,3,4,5,6,7,8,9,9,9,10] # Some other list of values 


data= np.array(network)  #network is a list of values 
datatwo= np.array(ilist)  #list is another list 

# Some list of color maps to color each list with 
cmap= np.array([(1,0,0),(0,1,0)]) 

# Get the unique values from each array 
uniqdata1, idx1=np.unique(data, return_inverse=True) 
uniqdata2, idx2=np.unique(datatwo, return_inverse=True) 

# Find the length of each unique value array 
N=len(uniqdata1) 
M=len(uniqdata2) 

# Plot the data 
fig, ax=plt.subplots() 
plt.scatter(np.zeros(N), uniqdata1, s=50, c=cmap[0]) 
plt.scatter(np.ones(M), uniqdata2, s=50, c=cmap[1]) 
plt.grid() 
plt.show() 

希望這有助於