Matplotlib显示x轴标签不完整;如何防止重叠?

时间:2020-08-25 09:22:26

标签: python pandas matplotlib

我已经编写了用于显示MACD指标图的代码。我所做的是在这里:

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

df = pd.read_csv(#stock_chart)
df = df.rename(columns={"<DTYYYYMMDD>":"Date"})
df['Date'] = pd.to_datetime(df['Date'].astype(str), format="%Y%m%d")
print(df.head())
#seting index for graph
df = df.set_index(df['Date'].values)
print(df.head())

我的数据框的头部是Graph columns and rows!

#Macd
S_term = 12
L_term = 26
s_ema = df.close.ewm(span=S_term, adjust=False).mean()
l_ema = df.close.ewm(span=L_term, adjust=False).mean()
#calculate MACD
macd = s_ema - l_ema

signal_term = 9
signal_line = macd.ewm(span= signal_term, adjust=False).mean()

#plot the graphs
plt.figure(figsize=(100,10)) #width = 12.2in, height = 4.5
plt.plot(df.index, macd, label='macd', color = 'red')
plt.plot(df.index, signal_line, label='Signal Line', color='blue')
plt.tight_layout()

plt.xticks(rotation=0)
plt.legend(loc='upper left')
plt.show()

最后,我明白了:

Matplotlib's graph

无论如何,问题是尽管行索引标签是这样的:2020-08-19 or "%Y%m%d",但是图形标签并不完整,如果我重新排序,则数据会相互重叠。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以使用Date locatorsDate formatters

^

enter image description here

interval 是每次迭代之间的间隔。例如,如果import numpy import matplotlib.pyplot as plt import matplotlib.dates as mdates import pandas N = 192 numpy.random.seed(N) dates = pandas.date_range('1/1/2004', periods=N, freq='m') df = pandas.DataFrame( data=numpy.random.randn(N), index=dates, columns=['A'] ) fig, ax = plt.subplots() ax.plot(df.index, df['A']) ax.xaxis.set_major_locator(mdates.YearLocator()) ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y')) fig.autofmt_xdate() plt.show() ,则标记第二次出现。

interval=2

enter image description here

相关问题