我目前有一个如下所示的日期框架:
如果我打印出数据类型,则时间为datetime.date,价格为numpy.float64。当我尝试使用以下代码绘制此图时,得到以下图:
from matplotlib import dates
import matplotlib.pyplot as plt
plt.figure(figsize=(20, 10))
plt.plot(df['time'], df['price']*100, color='royalblue', marker='o', markersize=8, linewidth=3.5)
我对为什么x轴弄乱了以及为什么日期被格式化的样子感到困惑。理想情况下,我只希望日期与数据框的time
列中指定的日期相同。其他一些Stackoverflow帖子建议使用DateFormatter,因此我尝试添加以下行:plt.gca().xaxis.set_major_formatter(dates.DateFormatter('%Y-%m-%d'))
。但是,我得到的错误“列表”对象没有属性“ DateFormatter”。很乐意提供有关如何在x轴上固定时间格式的建议(理想情况下,与指定时间相对应只有5个刻度)。谢谢!
答案 0 :(得分:0)
使用pandas的.plot()方法来利用pandas的格式化功能。该方法具有各种值得探索的here选项。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'Price': np.random.randint(20, 60, size=10),
'Change': np.random.randint(0, 10, size=10),
'Date': pd.date_range('2019-01-01', periods=10, freq='D')})
df.plot(x='Date',
y=['Price', 'Change'],
marker='o',
markersize=8,
linewidth=2.0)
df.plot(x='Date',
y=['Price', 'Change'],
marker='o',
markersize=8,
linewidth=2.0,
color=['green', 'red'],
subplots=True)