2013-06-23 4 views
0

Мне нужно нарисовать два набора по 100 точек каждый. Первый набор точек проходит по оси Y, а следующий набор точек немного дальше от первого набора точек.Matplotlib Graphing

Мой код выглядит следующим образом:

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

Minor комментария 'matplotlib.pyplot на plt' должен быть' 'как' не at' – Greg

+5

Ну, для начала, вы не используете' data' или 'datatwo' в ваш сюжет вообще звонит. Вы просто рисуете их длину (т. Е. Если 'data' имеет длину 3, вы рисуете [1, 2, 3] как значения y, независимо от фактических значений' data'). Кроме того, вы переписываете '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() 

Надеется, что это помогает