我对编码非常陌生,所以我感谢任何帮助。 我有一个大型数据文件,我想创建多个图,其中第一列是所有它们的x轴。理想情况下,代码将遍历所有列,每个列分别是新的y轴。我为各个图包含了我的代码,但是想要为所有列创建一个循环来完成它。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
X = df[:,0]
col_1= df[:,1]
plt.plot(X,col_1)
plt.show()
col_2= df[:,2]
plt.plot(X,col_2)
plt.show()
答案 0 :(得分:2)
Pandas将为您迭代所有列。只需将x列放在索引中,然后调用绘制数据帧。 Pandas使用索引作为x轴没有必要直接使用matplotlib。这是一些带有情节的虚假数据:
df = pd.DataFrame(np.random.rand(10,5), columns=['x', 'y1', 'y2', 'y3', 'y4'])
df = df.sort_values('x')
x y1 y2 y3 y4
9 0.262202 0.417279 0.075722 0.547804 0.599150
5 0.314894 0.611873 0.880390 0.282140 0.513770
8 0.406541 0.933734 0.879495 0.500626 0.527526
2 0.407636 0.550611 0.646449 0.635693 0.807088
1 0.437580 0.194937 0.501611 0.949575 0.409130
4 0.497347 0.443345 0.658259 0.457635 0.851847
3 0.500726 0.569175 0.304910 0.151071 0.678991
6 0.547433 0.512125 0.539995 0.701858 0.358552
0 0.783461 0.649381 0.320577 0.107062 0.840443
7 0.793702 0.951807 0.938635 0.526010 0.098321
df.set_index('x').plot(subplots=True)
答案 1 :(得分:1)
你可以遍历每个列,在它自己的子图上绘制它,如下所示:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(df.shape[1]-1, sharex=True)
for i in range(df.shape[1]-1):
ax[i].plot(df[:,0], df[:,i+1])
plt.show()
修改的
我刚刚意识到你的例子一次显示1个情节。你可以这样做:
import matplotlib.pyplot as plt
for i in range(df.shape[1]-1):
plt.plot(df[:,0], df[:,i+1])
plt.show()
plt.close()