为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇湘沐 2023-06-20 17:15:16
我已经编写了显示 MACD 指标图的代码。我在这里做了什么:import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport matplotlib.dates as mdatesdf = 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 graphdf = df.set_index(df['Date'].values)print(df.head())我的数据框的头部是:#MacdS_term = 12L_term = 26s_ema = df.close.ewm(span=S_term, adjust=False).mean()l_ema = df.close.ewm(span=L_term, adjust=False).mean()#calculate MACDmacd = s_ema - l_emasignal_term = 9signal_line = macd.ewm(span= signal_term, adjust=False).mean()#plot the graphsplt.figure(figsize=(100,10)) #width = 12.2in, height = 4.5plt.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()最后,我得到了这个:不管怎样,问题是尽管行索引标签是这样的:2020-08-19 or "%Y%m%d"图形标签不完整,如果我重新排序,数据就会相互重叠。我需要做什么 ?
查看完整描述

1 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

您可以使用Date locators和Date formatters。

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()

//img3.sycdn.imooc.com/64916e600001c65905940556.jpg

interval是每次迭代之间的间隔。例如,如果interval=2,标记每两次出现一次。


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.MonthLocator(interval=5))

ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))



fig.autofmt_xdate()


plt.show()

//img4.sycdn.imooc.com/64916e6f0001801106500332.jpg

查看完整回答
反对 回复 2023-06-20
  • 1 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信