如何在Matplotlib(xticks和yticks)中订购坐标

时间:2019-11-26 05:04:03

标签: python arrays numpy matplotlib

好的,所以我正在研究一个简单的程序,只是将坐标从文本板中拉出,然后在图形上绘制文本板中的图形。我以为这很简单,但是我对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中的顺序进行排序。这是当前输出的内容:This is what my graph looks like.

很抱歉,这是如此简单,以至于从未有人问过,就像我说的那样,对于matplotlib来说是非常新的东西,而如果我必须使用numpy,那就是numpy。我导入它是因为我认为可能必须这样做,但我认为到目前为止我还没有真正使用它。另外,我将按顺序将坐标重写到图形中,但是我想以后可以自己做。

1 个答案:

答案 0 :(得分:1)

问题在于您的坐标是字符串,这意味着matplotlib只是针对字符串(“分类”轴标签)绘制字符串。要解决此问题,您只需要将字符串转换为数字,例如x.append(int(getCoordinateX))

请注意,您也不必将plt.scatter / plt.plot放入循环中-您只需要在完整数组上调用一次。这也可能会使事情变得更快。