我有一个包含3列的文本文件。
到目前为止,我绘制了所有坐标:
import matplotlib.pyplot as plt
import numpy as np
x, y = np.loadtxt("coordinates.txt",delimiter=' ',skiprows=1, usecols=(0,1),unpack=True)
plt.plot(x,y)
plt.show()
我只想绘制第2列的值为1的那些坐标。
请帮帮我。
答案 0 :(得分:1)
import matplotlib.pyplot as plt
import numpy as np
f = np.loadtxt('coordinates.txt',delimiter=' ',skiprows=1)
f = f[f[:,2] == 1]
x = f[:,0]
y = f[:,1]
plt.plot([x], [y], 'ro')
plt.show()
答案 1 :(得分:0)
这样做的好方法是使用一个循环,根据列表中的位置绘制(假设)点。但考虑到您的意见,它可能对您有所帮助。 根据您的评论,您正在处理的数据被视为字符串。如果您计划处理编程,请务必检查数据类型。 https://www.tutorialspoint.com/python/python_variable_types.htm
import numpy as np
import matplotlib.pyplot as plt
data = np.loadtxt('coordinates.txt',delimiter=' ',skiprows=1)
x_data = data[:,0] # [every row, "1st" column]
y_data = data[:,1] # [every row, "2nd" column]
z_data = data[:,2] # [every row, "3rd" column]
#check every number in z and if it is equal to your desired condition,
#plot blue circle ('bo') on coordinates where that condition is satisfied (x[i], y[i])
for i in range(len(z)):
if z[i] == str(1):
plt.plot(x[i],y[i], 'bo')
您还可以绘制每个点,并使它们不同,如下所示:
for i in range(len(z)):
if z[i] == str(1):
plt.plot(x[i],y[i], 'bo') #ones are blue dots
else:
plt.plot(x[i],y[i], 'ro') #zeros are red dots
我肯定会建议你做一些关于如何读取数据以及如何在读取数据时进行处理的研究(例如:将字符串转换为浮点数),因为这不是正确的方法,但它会诀窍。