我通过从文本文件导入数据使用python绘制散点图,我想删除x轴值为0的点。这是我编写的程序
mat0 = genfromtxt("herbig0.txt");
mat1 = genfromtxt("coup1.txt");
pyplot.xlim([-2,6])
pyplot.ylim([26,33])
colors=['red', 'blue','green']
pyplot.scatter(mat0[:,13], mat0[:,4], label = "herbig stars", color=colors[0]);
if mat1[:,2] != 0:
pyplot.scatter(mat1[:,2], mat1[:,9], label = "COUP data of SpT F5-M6 ", color=colors[1]);
pyplot.scatter(mat1[:,2], mat1[:,10], label = "COUP data of SpT B0-F5", color=colors[2]);
pyplot.legend();
pyplot.xlabel('Log(Lbol) (sol units)')
pyplot.ylabel('Log(Lx) (erg/s)')
pyplot.title('Lx vs Lbol')
pyplot.show();
当我不使用if语句时,这是我的输出graph。 我想删除所有x轴值为零的蓝点。请提出修改建议。如果我使用if语句并且所有点都消失了。
答案 0 :(得分:3)
由于您的数据存储在numpy
数组中,因此您可以随时将其过滤掉:
使用nonzero
或设置过滤掉的小阈值:
#Either
mat_filter = np.nonzero(mat1[:,2])
#or
mat_filter = np.abs(mat1[:,2])>1e-12
然后您可以在受影响的阵列上使用该过滤器:
mat1mod2 = mat1[:,2][mat_filter]
mat1mod9 = mat1[:,9][mat_filter]
mat1mod10 = mat1[:,10][mat_filter]
绘制它们而不是原始数组。