我的 csv 文件看起来
0.0 1
0.1 2
0.2 3
0.3 4
0.5 7
1.0 9
0.0 6
0.1 10
0.2 11
0.3 12
0.5 13
1.0 14
...
我想在 x 轴上绘制第一列,在 y 轴上绘制第二列。 所以我的代码是
import matplotlib.pyplot as plt
from numpy import genfromtxt
data=genfromtxt("test",names=['x','y'])
ax=plt.subplot(111)
ax.plot(data['x'],data['y'])
plt.show()
但是这个连接图形的终点,显示直线,
(来源:tistory.com)
我想要的是这张图。
(来源:tistory.com)
那么如何读取数据文件或者matplotlib中有没有断开线路的选项?
最佳答案
正如其他人在评论中提到的那样,每次调用 plot 都会绘制它获得的所有点对,因此您应该为每一列分割数据。如果所有的线都是 6 磅,你可以这样做:
import matplotlib.pyplot as plt
from numpy import genfromtxt
data=genfromtxt("test",names=['x','y'])
x=data['x']
y=data['y']
columnsize = int(len(x)/6)
ax=plt.subplot(111)
for i in range(columnsize):
ax.plot(x[i*6:(i+1)*6],y[i*6:(i+1)*6])
plt.show()
当 x
和 y
的类型为 numpy.ndarray
时,此代码有效。 numpy 数组支持 indexing and slicing作为 python 标准语法。
关于python - 使用 matplotlib 从 CSV 文件中绘制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30091169/