如何解决为图内的每个元素更改图标记
我有一个矩阵,正在使用散点图将其可视化,尺寸为800x2。我试图更改每第100个元素的标记类型,例如从0到99标记将为'x',从100到199标记将为'o',依此类推。
但是我遇到以下错误:
TypeError:仅整数标量数组可以转换为标量 索引
这是我的实际代码:
from matplotlib.pyplot import figure
import numpy as np
color=['b','r']
markers = ['x','o','1','.','2','>','D','v']
X_lda_colors= [ color[i] for i in list(np.array(y)%8) ]
X_lda_markers= [ markers[i] for i in list(np.array(y)%2) ]
plt.xlabel('1-eigenvector')
plt.ylabel('2-eigenvector')
for i in range(X_lda.shape[0]):
plt.scatter(
X_lda[i,0],X_lda[i,1],c=X_lda_colors[i],marker=X_lda_markers[i],cmap='rainbow',alpha=0.7,edgecolors='w')
plt.show()
我的目标是基本上使用任何一种标记来区分x_lda [i,1]标签中每个正在绘制的簇的第100个元素。这段代码通常可以解决以下问题:Plotting different clusters markers for every class in scatter plot。
但是对于我来说,它给了我上面描述的错误。
这是一个可复制的示例:
X_lda = np.asarray([([1,2],[1,5],[2,3],[3,4],[6,9],[7,8],10],12],[13,14],[15,16],[12,15],[14,6])]).reshape(21,2)
a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
from matplotlib.pyplot import figure
plt.xlabel('LD1')
plt.ylabel('LD2')
plt.scatter(
X_lda[:,X_lda[:,c=['red','red','green','green'],edgecolors='w'
)
例如,对于此21x2数组,我想将前7个元素更改为“ x”,将后7个元素更改为“ o”,并将后7个元素更改为“>”。
解决方法
我认为您可能正在寻找类似的内容,在上面的代码中交换了第5行和第6行:
X_lda_colors= [ color[i%2] for i in range(X_lda.shape[0]) ]
X_lda_markers= [ markers[i%8] for i in range(X_lda.shape[0]) ]
但是,您不应遍历所有800个点并分别创建一个图。解决方法如下:
# plot each point in blue
plt.scatter(
X_lda[:,0],X_lda[:,1]
c = "b",...
)
# plot again using every 100th element in red
plt.scatter(
X_lda[::100,X_lda[::100,1]
c = "r",...
)
这将套印每个第100个元素,并在第二个红色点上显示。您最终只有两个分别具有800点和8点的绘图对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。