我正在尝试使用matplotlib和pandas显示代表努力量的时间序列线。
我的所有DF都覆盖在一个图中,但是当我做python时似乎剥离了日期的x轴并输入了一些数字。 (我不确定这些来自哪里,但猜测,并非所有日子都包含相同的数据,因此python已恢复使用索引ID号)。如果我绘制其中任何一个,他们会在x轴上找到日期。
任何使x轴显示多个图的日期的提示或解决方案都将非常受欢迎。
我用来绘制的代码是
fig = pl.figure()
ax = fig.add_subplot(111)
ax.plot(b342,color='black')
ax.plot(b343,color='blue')
ax.plot(b344,color='red')
ax.plot(b345,color='green')
ax.plot(b346,color='pink')
ax.plot(fi,color='yellow')
plt.show()
答案 0 :(得分:0)
我找到了一个能够满足我想要的答案,似乎调用plt.plot并没有使用日期作为x轴,但是使用pandas文档调用它就可以了。
ax = b342.plot(label='342')
b343.plot(ax=ax, label='test')
b344.plot(ax=ax)
b345.plot(ax=ax)
b346.plot(ax=ax)
fi.plot(ax=ax)
我想知道是否有人知道hwo在这里更改标签?
答案 1 :(得分:0)
一种选择是根据DataFrame索引手动指定x轴,然后使用matplotlib直接绘图。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# make up some data
n = 100
dates = pd.date_range(start = "2015-01-01", periods = n, name = "yearDate")
dfs = []
for i in range(3):
df = pd.DataFrame(data = np.random.random(n)*(i + 1), index = dates,
columns = ["FishEffort"] )
df.df_name = str(i)
dfs.append(df)
# plot it directly using matplotlib instead of through the DataFrame
fig = plt.figure()
ax = fig.add_subplot()
for df in dfs:
plt.plot(df.index,df["FishEffort"], label = df.df_name)
plt.legend()
plt.show()
另一种选择是使用Pandas连接您的DataFrames和plot。如果你给你的" FishEffort"在加载数据时或通过DataFrame.rename
填写正确的标签名称,然后将自动指定标签。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
n = 100
dates = pd.date_range(start = "2015-01-01", periods = n, name = "yearDate")
dfs = []
for i in range(3):
df = pd.DataFrame(data = np.random.random(n)*(i + 1), index = dates,
columns = ["DataFrame #" + str(i) ] )
df.df_name = str(i)
dfs.append(df)
df = pd.concat(dfs, axis = 1)
df.plot()