删除散点图中的点

时间:2016-07-26 06:54:33

标签: python matplotlib

我通过从文本文件导入数据使用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语句并且所有点都消失了。

enter image description here

1 个答案:

答案 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]

绘制它们而不是原始数组。