更改X轴的刻度频率

时间:2019-04-16 16:33:48

标签: python matplotlib

我正尝试绘制一个条形图,其中包含数据框中日期与加密货币的价格的对比,每天有731个样本。当我绘制图形时,我得到的图像如下所示。由于日期的数量,x轴不可读,我想这样做,因此它仅在x轴上标记每个月的1号。

这是我当前拥有的图形:https://imgur.com/a/QVNn4Zp

我尝试使用其他在stackoverflow和其他来源(例如youtube)上在线发现的方法,但均未成功。

这是我到目前为止绘制条形图的代码。

df.plot(kind='bar',x='Date',y='Price in USD (at 00:00:00 UTC)',color='red')

plt.show()

1 个答案:

答案 0 :(得分:0)

一种选择是使用matplotlib绘制数字条形图。

Matplotlib <3.0

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd

start = pd.to_datetime("5-1-2012")
idx = pd.date_range(start, periods= 365)
df = pd.DataFrame({'Date': idx, 'A':np.random.random(365)})


fig, ax = plt.subplots()
dates = mdates.date2num(df["Date"].values)
ax.bar(dates,  df["A"], width=1)

loc = mdates.AutoDateLocator()
ax.xaxis.set_major_locator(loc)
ax.xaxis.set_major_formatter(mdates.AutoDateFormatter(loc))

plt.show()

Matplotlib> = 3.0

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
pd.plotting.register_matplotlib_converters()


start = pd.to_datetime("5-1-2012")
idx = pd.date_range(start, periods= 365)
df = pd.DataFrame({'Date': idx, 'A':np.random.random(365)})


fig, ax = plt.subplots()

ax.bar(df["Date"],  df["A"], width=1)

plt.show()

其他选项:

有关其他选项,请参见Pandas bar plot changes date format