我想从列中绘制数据并根据另一列中的相应值更改颜色。我可以通过循环遍历每一行来实现:
for a in range(0, len(ben_chan)-1):
if ben_chan[a, int(ben_chan.shape[1])-1] == 0:
plot1=plt.plot(ben_chan[:,0],ben_chan[:,channel], ".r")
else:
plot2=plt.plot(ben_chan[:,0],ben_chan[:,channel], ".b")
有更有效的方法来实现这个吗?
答案 0 :(得分:0)
使用plt.scatter
解决 plt.scatter(ben_chan[:,0], ben_chan[:,channel], c=int(ben_chan.shape[1])-1], cmap"prism", s=100)
Scatter plot and Color mapping in Python
此外,如果提取列中满足条件的行并将其设置为新的numpy数组,则可以绘制具有更多不同颜色的绘图:
ben_stab = ben_chan[ben_chan[:,int(ben_chan.shape[1])-1] > 0] ## Extract rows where elements of ben_chan in column int(ben_chan.shape[1])-1 are > 0 and set as array ben_stab
ben_unstab = ben_chan[ben_chan[:,int(ben_chan.shape[1])-1] == 0] ## Extract rows where elements of ben_chan in column int(ben_chan.shape[1])-1 are = 0 and set as array ben_unstab
plot1=plt.plot(ben_stab[:,0],ben_stab[:,channel], '.b', markersize = 10)
plot2=plt.plot(ben_unstab[:,0],ben_unstab[:,channel], '.r', markersize = 10)