0

我需要绘制两组,每组 100 个点。第一组点沿 Y 轴移动,下一组点离第一组点稍远一些。

我的代码如下:

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()

我的问题是两个列表,网络和列表,具有不同的值,但解释器两次绘制同一组点。我需要两组不同的点,一组分别用于网络和列表。

代码有什么问题?谢谢

4

1 回答 1

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()

希望这可以帮助

于 2013-06-25T19:43:17.510 回答