好的,所以我正在研究一个简单的程序,只是将坐标从文本板中拉出,然后在图形上绘制文本板中的图形。我以为这很简单,但是我对matplotlib还是很陌生,所以我仍然不完全了解。我正确地完成了大多数代码,但是唯一不起作用的是,当我将值放入图形中时,它们全都乱了。我想对xticks和yticks进行排序,以便实际上看起来像在数学中会看到的真实折线图,因此您可以看到较低的坐标如何比较高的坐标低,反之亦然。这是我的代码:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
def split(word):
return list(word)
fileIWant = open('C:/Users/JustA/Desktop/Python Shenanigans/Converting Coordinates in a .txt to a Graph/Coordinates.txt', 'r');
stopwords = ['\n']
array = fileIWant.readlines()
array = [array.replace('\n', '') for array in array if array not in stopwords]
fileIWant.close()
editFile = open('C:/Users/JustA/Desktop/Python Shenanigans/Converting Coordinates in a .txt to a Graph/Coordinates.txt', 'w')
array_length = len(array)
x = []
y = []
for i in range(array_length):
dataSplit = array[i].split()
getCoordinateX = dataSplit[1]
getCoordinateY = dataSplit[3]
x.append(getCoordinateX)
y.append(getCoordinateY)
plt.scatter(x, y)
plt.plot(x, y) #Add this line in if you want to show lines.
plt.title('Your Coordinate Graph')
plt.xlabel('X Coordinates')
plt.ylabel('Y Coordinates')
#plt.xticks([-100,-80,-60,-40,-20,0,20,40,60,80,100])
#plt.yticks([-100,-80,-60,-40,-20,0,20,40,60,80,100])
plt.show()
editFile.close()
我注释掉了我的报价,因为它根本没有用。除去那些注释后,看起来还可以,但是这非常令人困惑。当我希望他们在代码中对自己进行排序时,我认为它只是按照它们在.txt中的顺序进行排序。这是当前输出的内容:
很抱歉,这是如此简单,以至于从未有人问过,就像我说的那样,对于matplotlib来说是非常新的东西,而如果我必须使用numpy,那就是numpy。我导入它是因为我认为可能必须这样做,但我认为到目前为止我还没有真正使用它。另外,我将按顺序将坐标重写到图形中,但是我想以后可以自己做。
答案 0 :(得分:1)
问题在于您的坐标是字符串,这意味着matplotlib只是针对字符串(“分类”轴标签)绘制字符串。要解决此问题,您只需要将字符串转换为数字,例如x.append(int(getCoordinateX))
。
请注意,您也不必将plt.scatter
/ plt.plot
放入循环中-您只需要在完整数组上调用一次。这也可能会使事情变得更快。